AIX下java进程堆内存存在大量空余,但rss内存不断增加

randy_ideal 2010-12-21 10:23:48
AIX下运行一个java进程,发现使用内存不断增加,但通过verbose:gc分析,发现其分配的堆内存一直都是70% 空余。即非堆内存一直增加,不知怎么回事,java进程逻辑比较简单,涉及定时读文件操作(一个文本文件大约6Mb),对读出的内容进行分析,插入数据库中,这之中,还有一些反射操作。
我在Windows Xp环境下进行测试,发现一切正常,内存会自动减少。
但我把程序放到AIX5.3 中,jdk使用1.4.2,运行时就发现如上所描述的现象,在ps avg查看时,发现rss项一直在增加,尽管增加的不多,但却一直增加(我运行了两天,利用crontab,发现java进程的rss没有减少过,即使没有文件,定时器空跑,内存也不降低)。
有哪位大侠遇到过此现象或有一些建议,能否给出解决方法,小弟在此拜谢了。

另外,java启动脚本如下:java -Xmx256m -Xms200m -Xloratio0.3 -verbose:gc myjar.jar
...全文
517 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
randy_ideal 2010-12-23
  • 打赏
  • 举报
回复
关键是WindowXp下运行一切正常,内存能正常回收,到了AIX下,通过verbose:gc可以看到堆内存有很大空余,且空余量一直维持在77%,但ps avg看到的rss缺一直增长。
to kala197:既不是电信也不是移动,aix有很多大型系统都使用的。
Jlins 2010-12-23
  • 打赏
  • 举报
回复
看看有没些 过期引用引起的 无法进行垃圾回收呢?
kala197 2010-12-23
  • 打赏
  • 举报
回复
AIX .......你在给电信还是移动做系统哦 ? AIX 一般的公司都不用的
randy_ideal 2010-12-23
  • 打赏
  • 举报
回复
数据库是oracle9i, 如果没有设置Xmx,则会出现javacore,因为Xmx默认才不到80m,设置了Xmx后,运行了几天,没有出现过javacore,但ps avg的rss值不断增加,没有减少的时候,只是增长的比较缓慢而已。使用了WMQ中间件
randy_ideal 2010-12-23
  • 打赏
  • 举报
回复
谢谢各位,目前基本上清楚了,程序本身没有问题,ibm的jre的gc策略比较特殊,当内存增长到一定程度(好像是堆内存分配线到达Xmx,即堆内存到达了Xmx,但其中还有很多不连续的空余内存)时,则开始降低。
就像oracle的高水位线。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧