win2008 r2内存爆满导致前端程序崩溃
情况描述:上周五,接到用户应用开发人员邀请,虚拟机重启后,一会功夫内存暴涨,直至把机器所有内存全部消耗殆尽,开发人员检查自己程序,包括:2个版本的oracle进程(10g、11g)、3个java不同版本的进程、以及一些大大小小的进程,总共不过占用内存不过11g,实在没有其他办法他们重启了很多次,问题依旧存在。


处理过程:
1、根据以上内容确实按照他们所说的检查一遍,情况确实和他们所说一样;并且他们的程序已经部署二三年了,最近一次升级实在2025年5月份左右,升级后运行正常,也没有出现服务器内存暴涨,前端业务扫描卡顿,扫描文档出现错位反工的情况;
2、通过下载微软内存检测软件RAMmap.exe,查看下运行内存的分布情况,metafile占用内存比较多,采用手动方式清空缓存的方式,确实将缓存清空了,但过了一段时间内存还是会涨上来。

3、于是采用批处理的方式定期empty standby list:清理包含未活跃使用的缓存数据和代码的内存
降低物理内存使用率。

备注:
Empty Working Sets(清空工作集)
Empty System Working Set(清空系统工作集)
Empty Modified Page List(清空已修改的页列表)
Empty Standby List(清空备份内存)
Empty Priority 0 Standby List(清空优先级为0的备份内存)
目前采用临时方法:使用创建计划任务,定期执行bat,清空缓存。

后记:从目前分析来讲,清除缓存是临时方法,从彻底解决问题角度,目前没有找到具体是哪个进程出现异常,内存无法有效回收,导致内存爆满,后期围绕这个问题展开研究,找出内存爆满的真正元凶,期待下回分解!
