VisualVM有两个单独的选项卡,用于采样和分析.有人可以帮我弄清楚VisualVM中的采样和分析之间的区别吗?
有人可以解释我的区别Sleeping,Wait,Park,和Monitor线程状态中的VisualVM.

这是我发现的:
Running:线程仍在运行.
Sleeping:thread正在休眠(在线程对象上调用方法yield())
Wait:线程被互斥锁或屏障阻塞,并且正在等待另一个线程释放锁
Park:挂起的线程被暂停,直到它们被给予许可.取消停放线程通常是通过在线程对象上调用方法unpark()来完成的
Monitor:线程正在等待条件变为true以恢复执行
我无法理解的是州立公园,实际上是什么暂停线程?如何在代码中检测到什么使线程暂停执行?
有人可以在这方面指导我.
谢谢.
除了Java任务控制中更"先进"的GUI之外,它们有何不同?
乍一看,它们似乎提供了非常相似的功能(解释JMX数据和内存/ CPU分析).
但是,由于它们都随JDK一起提供(我使用的是JDK 1.7.0_51 SE),我假设存在显着差异,否则它们将合并为一个解决方案.特别是因为这会显着增加JDK的大小.
Java Mission Control最终是否会在未来取代JVisualVM?
我正在远程Windows XP上的Java 6 VM上运行Java应用程序,我可以在其上运行jvisualvm.exe以自动连接到正在运行的应用程序.
现在我需要从本地计算机连接该应用程序,但我不知道远程计算机的JMX端口号.我在哪里可以找到它?或者,我是否必须使用某些VM参数重新启动该应用程序以指定端口号?
在阅读了如何在服务器中找到JMX端口的问题后,我在远程计算机上执行了该命令
netstat -apn
Run Code Online (Sandbox Code Playgroud)
但一无所获.
我可以从命令行检查正在运行的JVM的堆使用情况,我的意思是实际使用情况,而不是使用Xmx分配的最大数量.
我需要它是命令行,因为我无法访问窗口环境,我想要基于值的脚本,应用程序在Jetty应用程序服务器中运行
我想获得某个Java进程的堆转储(可疑的内存泄漏).但是,当我启动jvisualvm工具时,我看不到任何正在运行的Java进程.
我已经谷歌了解了这一点,并且已经发现了一些文章说你必须使用与启动jvisualvm工具相同的JDK来运行Java进程,以便它能够看到它们.但是,据我所知,情况已经如此.我在本地做所有事情(我可以远程访问机器).
需要考虑的几件事:
java.exe我正在等待服务器的虚拟副本,所以我可以搞砸它(这是一个生产服务器).但与此同时; 关于为什么我在jvisualvm(或jconsole)中看不到任何进程的任何想法?
我最近重新安装了Windows,我使用的是内置VisualVM的JDK 1.8 u91.我已经检查了我的代理设置,以确保它们都在Windows代理设置和VisualVM的代理设置中全部关闭.
我也尝试重新安装JDK,重新启动计算机,重新安装Windows.我只安装了一个JDK,并且类路径设置为Windows中的JDK bin文件夹.
除了CPU和内存分析之外的所有功能都在VisualVM中工作.我的应用程序是从IntelliJ运行的,但我也尝试从命令行定期运行应用程序,VisualVM也无法连接到那些应用程序.
我也试过从http://visualvm.java.net下载VisualVM,这也不起作用.
我没有安装插件.
它为什么挂?这是新JDK引入的错误吗?
通常我会在VisualVM中看到本地运行Java程序的所有这些选项卡:

但是,我有一个本地程序,目前只向我显示概述和监视器(即使它通常显示上面显示的所有内容):

同样有趣的是VisualVM本身不提供Profile选项卡:

显示的所有三个程序都使用具有相同Java Home的相同JVM运行.
什么控制为特定程序显示哪些选项卡?如何只显示概述和监视器,我怎样才能将它们全部取回?
我有Visual VM 1.3.5(在此日期最新)和JDK 1.7.0_17.
我的具体问题与JDK 1.6中使用的JMX有关:如果我使用JRE 1.6运行Java进程
com.sun.management.jmxremote
Run Code Online (Sandbox Code Playgroud)
在命令行中,Java是否为远程JMX连接选择了一个默认端口?
背景故事:我目前正在尝试开发一个程序,让客户能够通过JMX从远程机器连接到我们的一个进程.目标是实现对实时显示控制台上发生的情况的远程调试.由于他们的服务级别协议,他们强烈有动力捕获尽可能多的数据,如果情况看起来太复杂,无法快速修复,重新启动显示控制台并允许它重新连接到服务器端.
我知道我可以在JDK 1.6进程上运行jconsole,在JDK 1.6.7进程上运行jvisualvm,同时可以访问控制台.但是,由于操作要求和涉及的人员问题,我们强烈要求远程获取我们需要的数据并重新启动和运行.
编辑:我知道命令行端口属性
com.sun.management.jmxremote.port=portNum
Run Code Online (Sandbox Code Playgroud)
我想回答的问题是,如果你没有在命令行设置该属性,Java是否会选择另一个端口进行远程监控?如果是这样,你怎么能确定它可能是什么?
我怀疑我们的ActiveMQ连接桥有一个主要的内存泄漏 - 我们看到典型的内存泄漏模式(应用程序加载正常,如果长时间运行或在短时间内一次又一次地重新启动,则会减慢速度) .我查找了用于查找Java内存泄漏的现代最佳实践,许多开发人员似乎放弃了传统工具,如jhat/jmap,而不是新的(呃)jvisualvm.
在启动此工具(并花了几个小时阅读其教程)后,我可以为CPU和内存获取分析器快照.
我只是在这一点上陷入困境 - 如何分析这些快照来识别泄漏?关于如何使用jvisualvm来生成快照,有很多关于如何使用jvisualvm生成快照的文档,但很少有关于如何真正理解它们的文档.
提前致谢.