如何帮助java tomcat进程重新获得已用内存?
我们正在运行一个使用
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: 我使用这些参数来启动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获得的输出类型. 解决方法
我建议你不要猜.获取一些数据以确切了解发生了什么.您可以使用
visual gc来查看正在发生的事情.
如果是正在填补的烫发空间,那么你就无法做多少. 哪个JVM?如果它是5或更高,除了最大堆大小之外还有其他参数可以调整.查看http://blog.springsource.com/2008/10/14/optimising-and-tuning-apache-tomcat-part-2/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |