虚拟内存一直增加 但又没有内存溢出

xierangh 2009-03-23 09:07:13
我做了一个服务器,配置:8个CPU,4G内存 系统2003 标准版 虚拟内存设的是2G-4G
启动服务器占用内存2G,其中SQL 1.6G,程序占300M左右
但是程序启动后每天虚拟内存都增加200-300M(还有个奇怪的现象,如果不点击程序的运行窗口,那么它的内存也不断增加,点击后内存就和开始启动程序时的内存大小一样),直到总的内存 4G左右时程序就死掉了或者报不能连接数据库。
我怀疑是内存溢出,然后去用Visual Leak Detector来测试是否存在内存溢出,结果没有

请教各位大大这样的问题该怎么解决?解决了可以加分
...全文
518 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xierangh 2009-04-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 iam68620963 的回复:]
你这个问题太可爱了,你要知道内存泄漏是不会报错的. 如果内存一直往上涨,你就应该查一下你自己的程序,看看是哪里造成的内存泄漏. 其实你可以让程序跑起来,注意观察.看看程序每当运行到哪个部分会使内存大付度增涨一次.然后就去跟跟代码,看看哪里忘记释放了.
[/Quote]
内存涨的不明显,程序一直都在运行。而且线程比较多,这样定位不容易。
xierangh 2009-04-15
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 dongpy 的回复:]
楼主介绍一下程序大概情况,有几个线程,是否使用第三方库等等。

先定位内存泄露在哪个线程。
[/Quote]
怎么样定位内存的线程呢?有什么好的方法吗?
changhe325 2009-04-15
  • 打赏
  • 举报
回复
mrak
dongpy 2009-04-12
  • 打赏
  • 举报
回复
楼主介绍一下程序大概情况,有几个线程,是否使用第三方库等等。

先定位内存泄露在哪个线程。
iam68620963 2009-04-12
  • 打赏
  • 举报
回复
你这个问题太可爱了,你要知道内存泄漏是不会报错的. 如果内存一直往上涨,你就应该查一下你自己的程序,看看是哪里造成的内存泄漏. 其实你可以让程序跑起来,注意观察.看看程序每当运行到哪个部分会使内存大付度增涨一次.然后就去跟跟代码,看看哪里忘记释放了.
kingsoft55555 2009-03-25
  • 打赏
  • 举报
回复
mark
hndth 2009-03-25
  • 打赏
  • 举报
回复
mark
xierangh 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 rabbitlzx 的回复:]
还有个奇怪的现象,如果不点击程序的运行窗口,那么它的内存也不断增加,点击后内存就和开始启动程序时的内存大小一样

没怎么看明白
不过应该是内存泄露,可以用操作系统自带的perfmon监测一下进程的private bytes/working sets/handle counts
[/Quote]
有可能是一个假象(内存是及时释放出来了的),也有可能是点击了运行窗口后内存才释放出来

多谢各位的意见我再好好看看程序
crond123 2009-03-24
  • 打赏
  • 举报
回复
明显内存泄露 只是没检查出来
freshairfly 2009-03-24
  • 打赏
  • 举报
回复
明显的内存泄露
工具检测不出来,可能是因为,这些内存在最后还是被释放了(比如把申请到的对象放到一个容器了,程序退出时释放了,其实不应该有这么多对象存在容器里)
这样的内存泄露工具就很难检测出来
huojicha 2009-03-24
  • 打赏
  • 举报
回复
可能是你运行循环的过程中不断的分配内存,所以内存增加,但是你最后结束程序的时候又全部都释放了.所以VLD检测不到.
你再看看你每次MainLoop的时候分配的内容吧.
oyljerry 2009-03-24
  • 打赏
  • 举报
回复
运行的程序存在内存泄漏,分配的资源没有释放,new对应的要delete malloc对应要free
可以用boundscheck等来检查一下代码
rabbitlzx 2009-03-24
  • 打赏
  • 举报
回复
还有个奇怪的现象,如果不点击程序的运行窗口,那么它的内存也不断增加,点击后内存就和开始启动程序时的内存大小一样

没怎么看明白
不过应该是内存泄露,可以用操作系统自带的perfmon监测一下进程的private bytes/working sets/handle counts
xiaopoy 2009-03-24
  • 打赏
  • 举报
回复
内存溢出指申请的内存不够用,但强撑着压进去而使用了未知内存区域。
内存泄露是申请了内存使用毕继续占着位不做事。
xierangh 2009-03-23
  • 打赏
  • 举报
回复
程序太多无法贴出来
xierangh 2009-03-23
  • 打赏
  • 举报
回复
程序是用VC写的,是用来做网络管理的
  • 打赏
  • 举报
回复
你这个服务器干嘛的,应该是内存泄露了。
贴出来看看吧。
wuyu637 2009-03-23
  • 打赏
  • 举报
回复
这个就是内存泄漏嘛,只不过有可能没有被检测出来,
BTW, 你的程序是用vc写的吗,如果不是的话,用vld能检测吗?

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧