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

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

相关文章

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

Mysql DATETIME 毫秒坑的解决

《MysqlDATETIME毫秒坑的解决》本文主要介绍了MysqlDATETIME毫秒坑的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 今天写代码突发一个诡异的 bug,代码逻辑大概如下。1. 新增退款单记录boolean save = s

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修