首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于从tomcat获取HeapDump的Java VisualVM,但Tomcat未列在本地应用程序下

用于从tomcat获取HeapDump的Java VisualVM,但Tomcat未列在本地应用程序下
EN

Stack Overflow用户
提问于 2014-08-22 22:23:01
回答 1查看 857关注 0票数 0

我正在尝试诊断一个可能的内存泄漏问题。应用程序的运行速度非常慢。仅仅增加permgen大小只能暂时解决问题。我想对不需要的类加载器空间进行垃圾回收。因此,我需要获取tomcat服务器的堆转储。

这是我的tomcat日志中的问题:

web应用程序/创建了一个具有类型为org.codehaus.groovy.grails.orm.hibernate.support.HibernatePersistenceContextInterceptor$1的键和类型为java.lang.Boolean的值的ThreadLocal,但在web应用程序停止时未能将其删除。这很可能造成内存泄漏。

要将tomcat添加到Java visualvm中的应用程序中,有一些步骤在这个问题中提到。

Java VisualVM does not show/list my tomcat java process

我应该把它添加到应用程序的什么地方?这是一个war文件,我已将其部署在客户机的服务器上。我现在不能创建新的war文件。

代码语言:javascript
复制
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8484
-Dcom.sun.management.jmxremote.ssl=false
EN

回答 1

Stack Overflow用户

发布于 2014-08-22 22:37:09

首先,你需要在你的服务器上启用它,看看我为你拍摄的照片:

如果你在客户端部署它,你必须通过JAVA_OPTS来传递它。

Linux示例:

代码语言:javascript
复制
export JAVA_OPTS="-Detc etc..."

Windows示例:

代码语言:javascript
复制
set JAVA_OPTS="-Detc etc..."

在参数中,您需要添加以下内容:

代码语言:javascript
复制
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8484
-Dcom.sun.management.jmxremote.ssl=false

检查端口是否未被使用。

然后你需要配置你的JMX,这是正式的教程,它很简单:http://visualvm.java.net/jmx_connections.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25449259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档