gpt4 book ai didi

Java VisualVM 从 tomcat 获取 HeapDump 但 Tomcat 未在本地应用程序下列出

转载 作者:行者123 更新时间:2023-11-28 23:34:59 24 4
gpt4 key购买 nike

我正在尝试诊断可能的内存泄漏问题。该应用程序运行非常缓慢。仅通过增加 permgen 大小只能暂时解决问题。我想垃圾收集不需要的类加载器空间。所以,我需要获取 tomcat 服务器的堆转储。

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

Web 应用程序 [/] 创建了一个 ThreadLocal,其键类型为 [org.codehaus.groovy.grails.orm.hibernate.support.HibernatePersistenceContextInterceptor$1](值 [org.codehaus.groovy.grails.orm.hibernate.support) .HibernatePersistenceContextInterceptor$1@1dfd670]) 和 [java.lang.Boolean] 类型的值(值 [false]),但在 Web 应用程序停止时无法删除它。这很可能会造成内存泄漏。

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

Java VisualVM does not show/list my tomcat java process

我应该在应用程序的什么地方添加它?这是我部署在客户端服务器上的一个war文件。我现在无法创建新的 war 文件。

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8484
-Dcom.sun.management.jmxremote.ssl=false

最佳答案

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

enter image description here

如果您将其部署在客户端,则必须通过 JAVA_OPTS 进行传递。

Linux 示例:

export JAVA_OPTS="-Detc etc..."

Windows 示例:

set JAVA_OPTS="-Detc etc..."

在参数中,您需要添加这些:

-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

关于Java VisualVM 从 tomcat 获取 HeapDump 但 Tomcat 未在本地应用程序下列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25449259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com