admin 管理员组

文章数量: 1184232

问题描述

为什么我的cpu什么都没有开就50%了(优化缓存,内存占用高)?
应用加起来没有10的个g,其实并非木马病毒,无需重装系统。是虚拟内存占用。
是一些软件退出不当,导致一些内存释放不完全,这个时候用一些软件(RAMMap)来释放。

解决内存占用高,看不到进程的问题,刚开机内存就快没了,查看进程详细信息, 没看到内存占用高的进程
可能原因: ;另外可能的原因是内存泄漏。

其他解决方案——无效

实实在在的解决方案

RAMMap软件,软件内左上角empty里点击‘empty working set(清空工作集)’内存占用率也会下来(这个也还可以,并且不会关闭你使用的软件)

RAMMap网盘链接: 提取码: asdf
PoolMon下载链接:


通过RAMMap工具能够解决内存占用高的问题,但不能一劳永逸。另外,也可能是内存泄漏导致的,可以尝试PoolMon工具进行分析。

选项说明

Process Private: 分配给单一Process专用的内存
Mapped File: 用来储放档案内容快取(Cache)的内存空间
Shared Memory: 标注给多个Process共用的内存分页(Page,内存管理单位)
Page Table: 用来描述虚拟内存位址的分页表(裡面是一笔一笔的PTE,Page Table Entries)
Paged Pool: 允许移至硬盘的核心集区内存(Kernal Pool Memory)
Nonpaged Pool: 不允许移至硬盘的核心集区内存
System PTEs: 与I/O空间、核心堆叠、内存描述清单等系统分页相关的PTE
Session Private: 登入工作阶段相关的内存
Metafile: 是系统快取的一部份,包含NTFS Metadata(包含MFT及其他NTFS Metadata档案)。在MFT中,每个档案属性记录佔用1K,而一个档案至少有一个属性记录,再加上其他NTFS Metadata档,当档案数众多,这块会很快速成长。
AWE: 启用Address Windowing Extension技术所使用的相关内存空间(较常应用在SQL或其他DB)
Driver Locked: 驱动程式锁定的实体内存。多用于I/O的暂时性小量应用,如果有装RAMDisk,也会算在这一区。
Kernel Stack: 核心执行绪推叠,执行绪愈多,用量愈大。

每页都有以下样式

Active: 正在使用中的实体内存分页(Process Working Set或System Working Set)
Standby: 留在实体内存但暂不使用的分页,保留供后续能快速重覆利用
Modified: 与Standy类似,但内容被修改过,重覆使用前要先回写到硬盘机
Modified no write: 与Modified类似,但标注为不需回写到硬盘
Transition: 在分类之间转换的分页
Zeroed: 内容已清空可供使用的分页,系统刚开机时明显增加,随著使用一段时间逐步转为Standby
Free: 可以使用但残留先前资料的分页,使用前需先转为Zeroed
Bad: 标注损坏的内存**加粗样式**

poolmon是一个独立的exe,可以百度搜索poolmon下载,
也可以参考此文下载:

下载完成后,运行poolmon,显示完按P键,再按B键,使Bytes字段按大到小排序,显示如下:

Tag  Type     Allocs         Frees    Diff   Bytes    Per Alloc
mfel Nonp    28025291985402817127509919568624        
File Nonp  553380358552555890824468303815232368        
MFE0 Nonp  -1913787079-19162900912503012296951696118        
Key  Paged 208366984207614806752178192556160255        
HalB Nonp      6793925929420101724702724105        
IoNm Paged 545525420544707616817804124354240152        
Proc Nonp      3544821354271042969602943

运行Poolmon.exe,显示完按P键,再按B键,使Bytes字段按大到小排序,这样可以清楚的看到Bytes比较大的tag标记(比如:SpDN),如下图所示
如果SpDN一直处于增长状态,那么我们可以确定SpDN存在核心内存泄漏,可以通过findstr命令来定位占用SpDN的进程和驱动文件。
findstr /s /m /l “SpDN” c:\windows\system32\drivers*.sys
通过一个一个排查,最后找到核心内存泄漏检的元凶。

PooMon具有根据各种条件对输出进行排序的命令键。选择与每个命今关联的字母,以便处理数据。每个命今需要几秒钟才能正常了,
排序命令包括:

以上是解决该问题的一个思路,可以具体问题具体分析。

参考文献




本文标签: 分页 内存泄漏 内存占用