首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VC多线程编撰的程序,关于虚拟内存的使用疑问

2012-09-16 
VC多线程编写的程序,关于虚拟内存的使用疑问。VC多线程编写的程序,关于虚拟内存的使用疑问。自己开发的程序

VC多线程编写的程序,关于虚拟内存的使用疑问。
VC多线程编写的程序,关于虚拟内存的使用疑问。
自己开发的程序中原先出现内存泄露,后来解决了。
通过三天三夜的性能测试,发现内存使用正常。
但是有个问题,该进程对虚拟内存的占用还是只增加不减少。
一天增加3M左右。

这个问题如何解释

[解决办法]
另外,内存泄露可以从两个方面着手,
一方面借助一些工具来检测是否有内存泄露
另一方面,根据自己的经验人工分析排除
[解决办法]
检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!

[解决办法]
正常
经常长时间高负载运行后,
你只要使用MFC调试器,在退出的时候没有报告泄露
那么通常你的代码,至少逻辑上不存在泄露

虚拟内存增加,这主要是因为STL MFC这样的类库造成的
比如std::string
当你使用后,然后用一个空指针赋值,其实内存并没有释放
而是被保留,这主要是为了避免频繁的再分配
使用C++模板写代码,我个人认为最坏的地方就是这样
内存分配和释放很难直观显示

此外象COM对象什么的,如果使用了这些东西
那么内存更是一团糨糊,你根本不知道什么时间突然增加了内存,然后什么时候又减少了

热点排行