我正在使用Java Melody来监控我们的一个应用程序,这是一个标准的J2EE应用程序,部署在Tomcat 6中,使用Apache 2作为前端,使用AJP。 F5背后有两个实例。事情似乎很正常,这是一个小批量的应用程序;它平均每分钟约200次点击,使用大约4%的CPU,平均350兆的内存。困扰我的一件事是加载班级数;三天后,一个JVM为752k,另一个为741k。三是使用类计数增加的直接使用
在浏览stackoverflow时,似乎有很多关于应用程序停止时发生这种情况的帖子&在Tomcat中重新启动或重新部署。这里情况不同。任何时候我们重新部署,整个事情都会停止,包括Apache。
任何想法如何弄清楚发生了什么?
答案 0 :(得分:0)
您尚未报告任何OutOfMemory异常,因此这些增加的类可能不是问题。
如果加载的类计数增加,这意味着这些不会被垃圾收集,因为对这些实例的某些引用仍然存在。可能是这些是由应用程序加载并驻留在内存中的一些内部API或第三方库。
我建议有两件事:
A)您的GC设置Xmx,Xms,NewSize和批次是否设置为适当的值?您可以发布它们以添加到您的问题中。
B)分析应用程序并检查堆中的内容。使用VisualVM或Yourkit获取和分析堆转储。
答案 1 :(得分:0)
在AIX上运行tomcat 7时遇到了类似的问题。在添加了java_opt“-Xincgc”之后,它似乎达到了平衡。