标签: jvisualvm

jVisualvm中的采样和分析之间的差异

VisualVM有两个单独的选项卡,用于采样和分析.有人可以帮我弄清楚VisualVM中的采样和分析之间的区别吗?

java heap jvm jvisualvm

156
推荐指数
1
解决办法
2万
查看次数

VisualVM - 线程状态

有人可以解释我的区别Sleeping,Wait,Park,和Monitor线程状态中的VisualVM.

在此输入图像描述

这是我发现的:

Running:线程仍在运行.
Sleeping:thread正在休眠(在线程对象上调用方法yield())
Wait:线程被互斥锁或屏障阻塞,并且正在等待另一个线程释放锁
Park:挂起的线程被暂停,直到它们被给予许可.取消停放线程通常是通过在线程对象上调用方法unpark()来完成的
Monitor:线程正在等待条件变为true以恢复执行

我无法理解的是州立公园,实际上是什么暂停线程?如何在代码中检测到什么使线程暂停执行?

有人可以在这方面指导我.

谢谢.

java jvm visualvm jvisualvm

72
推荐指数
2
解决办法
3万
查看次数

JVisualVM和Java Mission Control有什么区别?

除了Java任务控制中更"先进"的GUI之外,它们有何不同?

乍一看,它们似乎提供了非常相似的功能(解释JMX数据和内存/ CPU分析).

但是,由于它们都随JDK一起提供(我使用的是JDK 1.7.0_51 SE),我假设存在显着差异,否则它们将合并为一个解决方案.特别是因为这会显着增加JDK的大小.

Java Mission Control最终是否会在未来取代JVisualVM?

java visualvm jvm-hotspot jvisualvm java-mission-control

50
推荐指数
2
解决办法
1万
查看次数

如何查找默认的JMX端口号?

我正在远程Windows XP上的Java 6 VM上运行Java应用程序,我可以在其上运行jvisualvm.exe以自动连接到正在运行的应用程序.

现在我需要从本地计算机连接该应用程序,但我不知道远程计算机的JMX端口号.我在哪里可以找到它?或者,我是否必须使用某些VM参数重新启动该应用程序以指定端口号?

在阅读了如何在服务器中找到JMX端口的问题后,我在远程计算机上执行了该命令

netstat -apn
Run Code Online (Sandbox Code Playgroud)

但一无所获.

java profiling jmx jvisualvm

48
推荐指数
1
解决办法
17万
查看次数

如何从命令行检查正在运行的JVM的堆使用情况?

我可以从命令行检查正在运行的JVM的堆使用情况,我的意思是实际使用情况,而不是使用Xmx分配的最大数量.

我需要它是命令行,因为我无法访问窗口环境,我想要基于值的脚本,应用程序在Jetty应用程序服务器中运行

java garbage-collection memory-management jetty jvisualvm

38
推荐指数
4
解决办法
10万
查看次数

jvisualvm没有列出某些Java进程

我想获得某个Java进程的堆转储(可疑的内存泄漏).但是,当我启动jvisualvm工具时,我看不到任何正在运行的Java进程.

我已经谷歌了解了这一点,并且已经发现了一些文章说你必须使用与启动jvisualvm工具相同的JDK来运行Java进程,以便它能够看到它们.但是,据我所知,情况已经如此.我在本地做所有事情(我可以​​远程访问机器).

需要考虑的几件事:

  1. 这些进程在防火墙的Windows 2008服务器上运行
  2. 使用JDK 可执行文件的重命名版本运行进程java.exe
  3. 据我所知,进程正在使用1.6.0_18 JDK运行
  4. 其中一个正在运行的进程启动RMI注册表

我正在等待服务器的虚拟副本,所以我可以搞砸它(这是一个生产服务器).但与此同时; 关于为什么我在jvisualvm(或jconsole)中看不到任何进程的任何想法?

java process jvisualvm

37
推荐指数
2
解决办法
2万
查看次数

VisualVM:CPU /内存分析器停留在"连接到目标JVM ......"

我最近重新安装了Windows,我使用的是内置VisualVM的JDK 1.8 u91.我已经检查了我的代理设置,以确保它们都在Windows代理设置和VisualVM的代理设置中全部关闭.

我也尝试重新安装JDK,重新启动计算机,重新安装Windows.我只安装了一个JDK,并且类路径设置为Windows中的JDK bin文件夹.

除了CPU和内存分析之外的所有功能都在VisualVM中工作.我的应用程序是从IntelliJ运行的,但我也尝试从命令行定期运行应用程序,VisualVM也无法连接到那些应用程序.

我也试过从http://visualvm.java.net下载VisualVM,这也不起作用.

我没有安装插件.

它为什么挂?这是新JDK引入的错误吗?

java profiler profiling visualvm jvisualvm

34
推荐指数
1
解决办法
7872
查看次数

为什么VisualVM不显示所有正常选项卡?

通常我会在VisualVM中看到本地运行Java程序的所有这些选项卡:

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

显示的所有三个程序都使用具有相同Java Home的相同JVM运行.

什么控制为特定程序显示哪些选项卡?如何只显示概述和监视器,我怎样才能将它们全部取回?

我有Visual VM 1.3.5(在此日期最新)和JDK 1.7.0_17.

java visualvm jvisualvm

29
推荐指数
3
解决办法
1万
查看次数

Java 6是否为JMX远程连接打开了默认端口?

我的具体问题与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是否会选择另一个端口进行远程监控?如果是这样,你怎么能确定它可能是什么?

java jmx jconsole jvisualvm

28
推荐指数
3
解决办法
9万
查看次数

如何使用visualvm查找内存泄漏

我怀疑我们的ActiveMQ连接桥有一个主要的内存泄漏 - 我们看到典型的内存泄漏模式(应用程序加载正常,如果长时间运行或在短时间内一次又一次地重新启动,则会减慢速度) .我查找了用于查找Java内存泄漏的现代最佳实践,许多开发人员似乎放弃了传统工具,如jhat/jmap,而不是新的(呃)jvisualvm.

在启动此工具(并花了几个小时阅读其教程)后,我可以为CPU和内存获取分析器快照.

我只是在这一点上陷入困​​境 - 如何分析这些快照来识别泄漏?关于如何使用jvisualvm来生成快照,有很多关于如何使用jvisualvm生成快照的文档,但很少有关于如何真正理解它们的文档.

提前致谢.

java profiling memory-leaks jvisualvm

23
推荐指数
1
解决办法
4万
查看次数