kma*_*oor 7 permgen jvisualvm tomcat7
关于停止/重启web-app Tomcat 7.0.26,我有一个非常简单的'Hello world'类型的Web应用程序(Spring 3.2.1,Hibernate 4.1.9)
The following web applications were stopped (reloaded, undeployed), but their
classes from previous runs are still loaded in memory, thus causing a memory
leak (use a profiler to confirm):
/myapp
Run Code Online (Sandbox Code Playgroud)
我采取了以下步骤:启动JVisualVM右键单击Tomcat并选择"堆转储"单击[heapdump]上的"OQL控制台"然后执行此查询:
select x from org.apache.catalina.loader.WebappClassLoader x
Run Code Online (Sandbox Code Playgroud)
找到4个实例:
org.apache.catalina.loader.WebappClassLoader
Run Code Online (Sandbox Code Playgroud)
选中的"已启动"字段为"false"右键单击"this"引用并单击"Show Nearest GC Root"将显示"未找到GC根"的对话框.
我错过了什么?任何帮助将不胜感激.谢谢.
随着网络上的所有教程,显示您描述的确切过程,
当它返回'No GC Root'时可能会令人困惑.
但这是件好事
这些教程错过了一个步骤,当查看WebappClassLoader列表时,单击右侧的"Compute Retained Size"链接

稍后(取决于堆的总大小),这将显示如下内容

保留值为0的行也是状态为false且没有GC Root的ClassLoader.
这只意味着它们已准备好运行JVM的下一次GC运行.
简介:即使'tomcat leak Detection'显示泄漏,如果保留的大小为0,它没有泄漏,它只是等待GC去除它.
注意:在visualVM中触发GC并不总是将其删除.虽然它将被JVM本身触发的GC删除.
| 归档时间: |
|
| 查看次数: |
1983 次 |
| 最近记录: |