解决内存占用高,看不到进程的问题,亲测可行

2024-08-27 03:12

本文主要是介绍解决内存占用高,看不到进程的问题,亲测可行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 问题描述
    • 其他解决方案——无效
    • 实实在在的解决方案
    • 使用poolmon工具分析(未进行研究)
    • 参考文献

问题描述

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

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

其他解决方案——无效

各种杂七杂八的解决方案

实实在在的解决方案

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

RAMMap网盘链接: https://pan.baidu.com/s/1M_iSUY8S3RVu7um8vo8S4Q 提取码: asdf
PoolMon下载链接:https://go.microsoft.com/fwlink/?linkid=2166289
RAMMap软件官网
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工具分析(未进行研究)

poolmon是一个独立的exe,可以百度搜索poolmon下载,
也可以参考此文下载: 用poolmon定位内存泄漏

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

Tag  Type     Allocs         Frees    Diff   Bytes    Per Allocmfel Nonp    2802529   1985402    817127 509919568        624        
File Nonp  553380358 552555890    824468 303815232        368        
MFE0 Nonp  -1913787079 -1916290091   2503012 296951696        118        
Key  Paged 208366984 207614806    752178 192556160        255        
HalB Nonp      67939     25929     42010 172470272       4105        
IoNm Paged 545525420 544707616    817804 124354240        152        
Proc Nonp      35448        21     35427 104296960       2943  

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

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

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

参考文献

排查Windows内存泄漏问题的详细记录
使用RAMMap+PoolMon分析Windows内存使用异常问题
用poolmon定位内存泄漏
解决内存占用高,看不到进程的问题

这篇关于解决内存占用高,看不到进程的问题,亲测可行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110470

相关文章

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

如何解决Pycharm编辑内容时有光标的问题

《如何解决Pycharm编辑内容时有光标的问题》文章介绍了如何在PyCharm中配置VimEmulator插件,包括检查插件是否已安装、下载插件以及安装IdeaVim插件的步骤... 目录Pycharm编辑内容时有光标1.如果Vim Emulator前面有对勾2.www.chinasem.cn如果tools工

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动