发布: 2008-12-19 10:42 | 作者: PUPU840323 | 来源: 本站原创 | 查看: 342
1、问题描述:
服务器的内存一直被支持占用1G,而使用内存很有规律的从600多M增加到1G后,再释放到600多M,空闲内存也配合使用内存而有规律的调节。发现这个现象后,确认应用与数据库无人在用,排除了有人操作服务器造成大的访问量的可能,同时日志也没有异常情况,所以再进行跟踪。跟踪发现,内存仍然如此,在很有规律的上下浮动,但是总占用内存不变,此处存在问题。
2、问题推测:
根据内存使用情况来看,可能存在两种状况,一部分可能是浮动的内存存在问题(从600M到1G),一部分可能是固定内存存在问题(最低使用总是600M以上)。
1)上下有规律的内存浮动,怀疑是否有数据在循环执行。
2)使用内存量持续保持600M以上,怀疑内存中存在数据没有释放。
图1:WAS内存使用情况
根据开发部提供的《XXX9.5版升级实施工作进展情况(截至10月26凌晨2点)》部分符合第一点的问题,但是也有不符合的地方。
(1)这个问题只有在XXX出现过(2)MMM一直运行正常,并为对数据库更新过
由此推断不是开发部说的这个问题。
后来得到消息,数据中心人员对MMM的MDM更新过一个过滤的文件,然后重新启动应用,这里第二个推测就和这个举动紧密相连了。
首先想到的是静态变量没有释放的问题,这里涉及到WAS的工作机制,WAS在重启一个应用的时候,是不会释放应用中静态变量所引用的内存的,只有重启WAS,内存才会被完全释放。根据这个原理,我找数据中心进行了咨询,确认是够是对包进行了更新,得到肯定的答案,然后确认是否在程序中引入了大量的静态变量,同样得到了肯定的答案,由此,我对推测了产生了相对确认的肯定。