java工程一个比较奇怪的问题,大家进来看看

lch123 2008-09-13 03:59:40
最近公司有个java项目,上线部署初期运行一段时间后内存占有量一直上升、cpu保持至60%~70% 至死机,然后查找代码中可能内存泄露的地方,修改优化代码后,对jvm的设置如下:
JAVA_OPTS="$JAVA_OPTS -server -Xms1600m -Xmx1600m -XX:NewSize=256m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:ParallelGCThreads=2 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Djava.awt.headless=true"
重启tomcat运行3~4小时后,top查看java进程达到1.8G时,浏览很慢直至tomca还是照样t死机!
(此时日志未报出内存溢出的信息!)



再次优化代码,其它设置未改,部署上去后不到半个小时内存耗光,tomcat死机,然后把上述的GC设置 :
JAVA_OPTS="$JAVA_OPTS -server -Xms1024m -Xmx1600m -XX:NewSize=256m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:ParallelGCThreads=2 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Djava.awt.headless=true"整行全部去除,内存反而上得很缓慢了,而且有1~3m的回退现象,用netstat -nat|grep -i "80"|wc -l查看连接数保持在200至300左右,又运行2小时之后cpu却不断地上升为25%至30%之间.
(测试日志又未报出内存溢出的信息!)



这样的情况下,俺就超级郁闷再加狂晕了......:
1.为什么我没有指定-XMS -XMX和GC(去除整行)内存反而上得很缓慢了,而且有1~3m的内存回退现象(运行3-4小时系统稳定,就是CPU稳步上升!)
2.既然要想释放更多的内存,我就添加上:JAVA_OPTS="$JAVA_OPTS -server -Xms1600m -Xmx1600m -XX:NewSize=256m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:ParallelGCThreads=2 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Djava.awt.headless=true"
为什么内存占用消耗更快?而且达到GC的-XMS的时候,完全没有回退现象,而且更快死机!难道以上写JVM不起效,反而成为占用内存的杀手?



各位高手帮俺分析下,万分着急,寝食难安,身心憔悴,在下感谢万分!!

敬礼!

2008-3-13
...全文
68 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangdp_neu 2008-12-26
  • 打赏
  • 举报
回复
只能看看代码了,把内存泄漏的代码找出来,Java中的内存泄漏还真不容易找的。
http://blog.csdn.net/zhangdp_neu/archive/2008/05/24/2476708.aspx 可以看看,也许能帮你
lq20051610211 2008-12-09
  • 打赏
  • 举报
回复
顶起~
xiaolei1982 2008-09-13
  • 打赏
  • 举报
回复
揭贴率:-20.00% !-_-

5,655

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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