我想获取某个Java进程的堆转储(可能的内存泄漏)。但是,当我启动jvisualvm工具时,看不到任何正在运行的Java进程。
我已经在Google上搜索了有关此内容,并且已经找到了几篇文章,说您必须使用启动jvisualvm工具时所使用的同一JDK运行Java进程,以便它能够看到它们。但是,据我所知,情况已经如此。我正在本地做所有事情(我可以远程访问机器)。
需要考虑的几件事:
java.exe
可执行文件版本运行我正在等待服务器的虚拟副本,因此我可以弄乱它(这是生产服务器)。但与此同时;关于为什么我看不到jvisualvm(或jconsole)中的任何进程的任何想法?
在我做了一点研究之后,似乎彼得的评论是正确的。因为JVM进程是由另一个用户启动的(NETWORK
SERVICE帐户,因为它们是由Windows服务启动的),所以它们未显示在jvisualvm中。
由于我可以访问应用程序配置,因此找到了以下解决方法,其中涉及为目标JVM显式启用不安全的JMX:
-Dcom.sun.management.jmxremote.port=3333 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
链接到更详细地解释这一点的文章
:http
:
//download.oracle.com/javase/6/docs/technotes/guides/visualvm/jmx_connections.html
问题内容: 我有一个来自客户的错误,当我查看日志时,我们跟踪异常,某些堆栈跟踪没有行号: 请注意:我已将包名称替换为“ xx”),并且所有类和方法均在我们的应用程序中定义: 完整的堆栈跟踪如下: 我对为什么会发生这样的事情很感兴趣,我的客户是否有可能对现有代码(自定义)进行某些处理? 问题答案: 不显示行号的代码是在没有调试信息的情况下编译的。
除了把它们全部输入外,还有没有更好的方法在字符串中列出它们?
如果有人能指出错误或提供一些建议,我将非常感谢。
除了把它们全部输入外,还有没有更好的方法在字符串中列出它们?
问题内容: 序言: 我在单元测试中一直在挣扎着LazyInitializationException,我很难理解它,正如我在Spring,[TestNG和Spring3中的数据库会话以及在进行Hibernate单元测试时”使用TestNG对Spring中使用的Hibernate实体类进行单元测试时,出现LazyInitializationException”遇到的LazyInitializatio
问题内容: 我最近注意到,有一些Java库(JDK,joda time,iText)在编译时没有部分/全部调试信息。要么缺少局部变量信息,要么缺少局部变量信息和行号。 有什么理由吗?我意识到这会使编译后的代码更大,但我认为这不是一个特别大的考虑因素。还是仅使用默认的编译选项进行构建? 谢谢。 问题答案: 默认的编译选项不包含调试信息,您必须明确告诉编译器包括调试信息。大多数人忽略它的原因有几个: