Windows10内存泄漏,分页池高分析及解决方案
- 一、 内存构成
- 二、 定位泄漏软件的两种方法
- 1、User-Mode 转储堆 (UMDH) 工具
- 2、Windows poolmon.exe工具
- 3、终极工具-WPT(Windows Performance Toolkit)定位代码行
- 三、 Windows10的虚拟内存暴涨的意想不到的原因
- 1、开发人员
- 2、消费者
- A.佛系版本
- B.折腾版本
作为一名开发定位到导致操作系统内存泄漏的软件是自家公司的产品,岂不是很羞先人!
一、 内存构成
二、 定位泄漏软件的两种方法
1、User-Mode 转储堆 (UMDH) 工具
如果是任务管理器可以看到哪个进程占内存多,可以用我自己开发的工具进行定位代码行。链接: 参看此文:
2、Windows poolmon.exe工具
3、终极工具-WPT(Windows Performance Toolkit)定位代码行
参看此文:使用WPT定位导致虚拟内存泄漏的祸首.
三、 Windows10的虚拟内存暴涨的意想不到的原因
1、开发人员
虚拟内存泄漏的故障原因是PlaySound函数导致,主程序间隔一段时间调一次该函数播放一个很小的WAV文件,win10,8GRAM下,大约20000次就开始暴涨。因为已经定位到最底层的函数了,所以肯定是得从系统这找解决方案了。
2、消费者
A.佛系版本
1、直接使用memReduct 清理下就好了
2、在此处设置定期清理或者当大小超了多少自动清理(管理员权限运行):
下载地址:链接:https://pan.baidu/s/10PD0RCTI0DgzGYxRilhQrg 提取码:kdde
B.折腾版本
1、win+R 打开msconfig
2、点击确定,查看自己的是否是“有选择的启动”
3、如果是有选择启动,恭喜你中奖了,不管是运行啥程序都有可能导致你的虚拟内存不断上涨,一般情况是这样:
4、解决方法往往不是直接把第2条的启动选择改为“正常启动”然后重启那么容易。这是需要鼠标移动到左下角,右键单击以管理员运行powershell,输入命令bcdedit。
5、注意在windows启动加载器这一节,在标识符列有个nx参数,其对应的值是OptIn。nx 用来配置数据执行保护 (DEP),这是一组硬件和软件技术,旨在防止有害代码在受保护的内存位置运行。总共有四种参数可选,微软官方定义如下:
6、输入命令:
bcdedit /set nx Optout
执行完重启结果如下图:
7、正常的操作系统分页缓存池不会很大,虚拟内存也不会一直涨。任务管理器查看内存状态如下就正常了是😊。(几百兆)
更多推荐
Windows10内存泄漏,分页池高分析及解决方案
发布评论