标签: visualvm

用于cpu profiling的过滤类是否适用于Java VisualVM?

我想在Java VisualVm(版本1.7.0 b110325)中过滤哪些类是cpu-profiled.为此,我尝试在Profiler - > Settings - > CPU-Settings下将" Profile only classes "设置为我的测试包,这没有任何效果.然后我尝试通过在" 不要分析类 "中设置它们来摆脱所有java.*和sun.*类,这些也没有效果.

这只是一个错误吗?或者我错过了什么?有解决方法吗?我的意思是:

我想这样做主要是为了获得每个方法消耗的CPU的正确百分比.为此,我需要摆脱烦人的测量,例如sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()(约70%).很多用户似乎都有这个问题,例如

java profiler profiling visualvm jvisualvm

6
推荐指数
1
解决办法
5053
查看次数

在哪里下载JMXMP?

我想通过JMX远程通过VisualVM分析Java应用程序.因为它是一个NAT和防火墙的EC2实例,我不能使用默认的RMI方法,需要使用我必须首先下载的可选JMXMP扩展.

注意 - 如果您想使用JMXMP连接器,下载JSR 160的参考实现FROM,并添加JMXREMOTE_OPTIONAL.JAR文件到您的CLASSPATH.您将在JMX远程API补习中找到使用JMXMP连接器的示例,包括JSR 160参考实现.

http://docs.oracle.com/javase/6/docs/technotes/guides/jmx/overview/connectors.html

但是当我去那个页面时,我找不到下载.事实上,谷歌找不到下载.我在哪里可以获得这些扩展?

java profiling jmx visualvm jmxmp

6
推荐指数
2
解决办法
6295
查看次数

什么是Visual VM中的RMI TCP接受,附加侦听器和信号调度程序?

我正在使用Visual VM分析程序.我的程序运行了一段时间,最后使用XChart弹出一些图表显示结果.显示图表后,我在Visual VM中注意到一些活动线程"RMI TCP Accept","Attach Listener"和"Signal Dispatcher".这些线程是什么?我假设他们只与Visual VM有关.我对么??

从Visual VM截屏

java visualvm

6
推荐指数
1
解决办法
5296
查看次数

从堆转储文件中识别堆内存的大小?

我使用-Xmx512m,在内存不足错误后,我得到了一个堆转储.将此堆转储加载到JAVA时,VisualVM显示的堆大小超过1 GB.

当我的-Xmx值为512 MB 时,无法理解堆大小如何增长到1 GB .

VisualVM屏幕截图

编辑

我看了这个问题被标记为重复的另一个问题,我得到了JVM具有非堆内存和其他内存部分的答案的一部分(如下图所示)

JVM内存部件

但仍有一个问题.有没有什么办法可以从堆转储中识别出只有堆内存的大小?

java jvm visualvm heap-memory

6
推荐指数
1
解决办法
1645
查看次数

为什么Java CPU配置文件(使用visualvm)在一个什么都不做的方法上显示如此多的命中?

这是我以前在其他环境中使用其他分析工具时所看到的,但在这种情况下它尤其引人注目.

我正在运行一个运行大约12分钟的任务的CPU配置文件,并且它显示了几乎一半的时间花费在一个字面上什么都不做的方法:它有一个空体.是什么导致这个?我不相信这种方法被称为荒谬的次数,当然不会占用执行时间的一半.

对于它的价值,所讨论的方法称为startContent(),它用于通知解析事件.事件沿着一系列过滤器传递(可能是十几个),并且每个过滤器上的startContent()方法除了在链中的下一个过滤器上调用startContent()之外几乎没有任何作用.

这是纯Java代码,我在Mac上运行它.

附件是CPU采样器输出的屏幕截图:

CPU采样器截图

这是一个显示调用堆栈的示例:

CPU采样器示例调用堆栈

(因休假而延误)以下是一些显示探查器输出的图片.这些数字远远超出我期望的配置文件的样子.探查器输出似乎完全有意义,而采样器输出是虚假的.

CPU分析器输出1 CPU分析器输出2

正如你们中的一些人已经猜到的那样,有问题的工作是Saxon XML模式验证器的运行(在9Gb输入文件上).该配置文件显示大约一半的时间用于验证元素内容与简单类型(在endElement处理期间发生),大约一半用于测试关键约束的唯一性; 两个探查器视图显示了该任务的这两个方面所涉及的活动.

我无法提供来自客户端的数据.

java performance visualvm

6
推荐指数
1
解决办法
4337
查看次数

VisualVM运行JRE

我不能让VisualVM使用eclipse,我遵循这些说明 http://visualvm.java.net/download.html 以及这些 http://visualvm.java.net/gettingstarted.html

问题是它无法看到JDK位置是"C:\ Program Files\Java\jdk1.8.0_05",当我尝试运行应用程序时会发生这种情况

在此输入图像描述

这是visualvm.conf文件的原始内容

http://pastebin.com/K9TnQb0G

不幸的是我的命令行也不知何故(或者我不知道该怎么做)

在此输入图像描述

首先我尝试安装JProbe但它没有工作,然后我尝试了VisualVM,它也无法正常工作.我该如何解决这个问题?我浪费了5个小时,它让我疯狂.

java eclipse visualvm

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

VisualVM:如何在堆中查找对象的大小,包括它从其字段引用的所有对象?

如何在堆中找到对象的大小,包括它从其字段引用的所有对象?

在堆转储下的Classes视图中,大小仅指示对象的"浅"大小.我想知道对象的大小是什么,基本上是它通过字段引用的对象的总大小.

谢谢

java visualvm oql

6
推荐指数
1
解决办法
3713
查看次数

如何使用VisualVM和JMX?

我已经尝试了书中的每一个食谱,但今天的事情都不会奏效......

我正在尝试使用VisualVM来配置我在远程服务器上运行的Java应用程序,所以我用Google搜索并用Google搜索并搜索了这样做的方法,我最终得到了这个解决方案:

java -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.port=9199 \
  -Dcom.sun.management.jmxremote.local.only=false \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.ssl=false \
  -jar bin/felix.jar
Run Code Online (Sandbox Code Playgroud)

运行这个会让我JMX运行我猜,所以我可以看到他在9199运行:

java      21947        root    9u  IPv6 1811434      0t0  TCP *:7192 (LISTEN)
java      26376        root   14u  IPv6 1844518      0t0  TCP *:9199 (LISTEN)
Run Code Online (Sandbox Code Playgroud)

此外,我可以测试该端口在Web上是否可见:

在此输入图像描述

现在,当我尝试在我的机器中打开VisualVM中的连接(也可以ping jmx服务器)时,会发生这种情况:

在此输入图像描述

在此输入图像描述

在此输入图像描述

我一定是如此愚蠢,以至于这个世界上的每个人都能把这个东西运转起来但是我.该死的...

编辑:我安装了wireshark来了解引擎盖下发生了什么,所以我看到了这个.一旦我在VisualVM中添加远程IP,wireshark就开始检测这个重复的活动:

在此输入图像描述

但是,如果我尝试添加新的JMX连接并要求他连接,则wireshark甚至不会抓取该连接尝试的单个数据包.

在此输入图像描述

在我看来VisualVM甚至没有尝试连接,尽管给出错误消息"无法连接"...... !! 这到底是怎么回事?

java jmx rmi visualvm jvisualvm

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

VisualVM无法在Eclipse上分析Web应用程序

我想介绍一下在Tomcat和Eclipse上运行的Spring Web Application.我将VisualVM添加到Eclipse中,然后按照以下步骤运行应用程序以进行性能分析.

Right click on the application name > 
Run As > 
Run Configuration > 
Java Application > 
'Selected Project' > 
Set 'org.apache.catalina.starup.Boostrap' as a value for Main class, 
also selected VisualVM as the Launcher > clicked on Run button.
Run Code Online (Sandbox Code Playgroud)

VisualVM启动但显示以下消息:

  "Cannot open requested application"
Run Code Online (Sandbox Code Playgroud)

在本地我可以看到VisualVM,Eclipse和Tomcat.

以下异常将被抛出并显示在控制台上:

 Exception in thread "main" java.lang.NoClassDefFoundError: 
org/apache/juli/logging/LogFactory
    at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:59)
Caused by: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more
Run Code Online (Sandbox Code Playgroud)

我认为问题是因为选择了错误的服务器.也许我应该选择Tomcat但不确定如何.

java eclipse tomcat web-applications visualvm

6
推荐指数
1
解决办法
2194
查看次数

VisualVM无法在Ubuntu 18.04上启动

sudo apt install visualvm在Ubuntu 18.04上安装后,VisualVM无法启动.它什么都不做.

启动它会visualvm -J-Djava.util.logging.config.file=logging-jconsole.properties产生以下错误消息:

java.lang.UnsatisfiedLinkError: no splashscreen in java.library.path
  at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
  at java.lang.Runtime.loadLibrary0(Runtime.java:870)
  at java.lang.System.loadLibrary(System.java:1122)
  at java.awt.SplashScreen$1.run(SplashScreen.java:124)
  at java.awt.SplashScreen$1.run(SplashScreen.java:122)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.awt.SplashScreen.getSplashScreen(SplashScreen.java:121)
  at org.netbeans.core.startup.Splash.<init>(Unknown Source)
  at org.netbeans.core.startup.Splash.getInstance(Unknown Source)
  at org.netbeans.core.startup.Main.start(Unknown Source)
  at org.netbeans.core.startup.TopThreadGroup.run(Unknown Source)
  at java.lang.Thread.run(Thread.java:748) 
Run Code Online (Sandbox Code Playgroud)

安装JDK后问题仍然存在sudo apt install default-jdk.

java ubuntu visualvm ubuntu-18.04

6
推荐指数
1
解决办法
2085
查看次数