加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何帮助java tomcat进程重新获得已用内存?

发布时间:2020-12-15 08:29:44 所属栏目:Java 来源:网络整理
导读:我们正在运行一个使用 Java 64bit 5 gigs -Xmx最大堆大小的Web应用程序.我们无法控制java代码.我们只能调整配置参数.我们面临的情况是java进程在启动后分配完整堆后,它开始对网站请求的响应非常慢.我的猜测是等待GC收集未使用的内存对象. 下图将显示linux中t
我们正在运行一个使用 Java 64bit 5 gigs -Xmx最大堆大小的Web应用程序.我们无法控制java代码.我们只能调整配置参数.我们面临的情况是java进程在启动后分配完整堆后,它开始对网站请求的响应非常慢.我的猜测是等待GC收集未使用的内存对象.

下图将显示linux中top的图像,显??示进程的严重情况.

top image of java process http://cp.images.s3.amazonaws.com/ForumImages/java-gc-issue.jpg

有什么办法,我们可以帮助java重新获得分配空间内的已用内存.

编辑1:
我使用下面的一些答案来得到我的问题的答案.由于我的问题太难回答,结果证明是一个讨论.我将发布我如何能够监控GC循环,我会选择更多的投票答案.我通过真正的vnc查看器使用jconsole能够从我的Windows机器挂钩到运行tomcat的linux机器.

我使用这些参数来启动java进程:

-Djava.awt.headless=true -server -Xms512m -Xmx5120m -Dbuild.compiler.emacs=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=4999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

这是我从jconsole到vnc viewer获得的输出类型.
GC Sample Image http://cp.images.s3.amazonaws.com/ForumImages/Sample_GC_Image.jpg

解决方法

我建议你不要猜.获取一些数据以确切了解发生了什么.您可以使用 visual gc来查看正在发生的事情.

如果是正在填补的烫发空间,那么你就无法做多少.

哪个JVM?如果它是5或更高,除了最大堆大小之外还有其他参数可以调整.查看http://blog.springsource.com/2008/10/14/optimising-and-tuning-apache-tomcat-part-2/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读