Tag: visualvm

heapdump size vs hprof size

当我的jboss服务器以4096m的xms和4096m的xmx以及512m的permsize运行时,我最近以hprof格式创建了一个heapdump。 生成的hprof文件超过5GB。 当我在visualvm,mat analyzer或yourkit中加载heapdump时,我只看到大约1gb的总字节数。 我已尝试更改yourkit中的可访问性范围,但它不会显示超过1 GB。 知道文件大小与显示的堆转换大小有什么重大差异会导致什么? ps:我正在使用jdk1.6.0_23 不幸的是我不允许在这里提交截图。 在文件系统上,hprof大小为5.227.659 kb,在yourkit中它指出: 对象:9.738.282 /浅尺寸740 mb /保留大小:740 mb其中可达到的字符串:6.652.515(68%)/浅尺寸:381 mb(51%)/保留大小:381 MB(51%) 保留的最大大小是一个字节[] 206.810.176

VisualVM OQL:如何搜索原始浮点值而不是实际的浮点数实例?

我想知道如何搜索匹配特定数字的所有原始浮点值。 在做类似的事情时: select n from java.lang.Float n where n.value == 1.00 只找到Float类实例。 我正在探索的应用程序使用的不同包装器不仅仅是Float(例如,Vectors),它使用原始浮点值作为我需要搜索的字段。 我怎么做到这一点? 以下返回“找不到浮动错误”: select n from float n where n.value == 1.00

限制Visual VM中的分析

我正在尝试新JDK附带的VisualVM程序。 我正在对它进行分析,并试图仅在特定包中的方法上分析CPU。 我在“仅配置文件类”中添加了以下内容: jig.* 夹具是我想要的包装。 不幸的是,我得到了不在该包或任何子包中的其他方法的结果。

VisualVM打破了docker

我正在尝试分析由“mvn jetty:run”运行的应用程序,当我将VisualVM连接到它并单击Profile jetty崩溃时: Profiler Agent: Waiting for connection on port 5140 (Protocol version: 8) Profiler Agent: Established local connection with the tool # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6da5e5d4, pid=5124, tid=5704 # # JRE version: 6.0_16-b01 # Java VM: Java HotSpot(TM) Client VM […]

jmx / jstatd通过ssh隧道访问远程机器

我想使用jmx或jstatd通过ssh隧道(到EC2机器)使用visualvm app。 我该怎么做呢? 以下是已尝试(和失败)的列表:(顺便说一下:如果视觉vm不合适,如何在远程计算机上找到内存泄漏?) jstatd:尝试: 我在EC2机器上设置了jstatd服务器(应用程序已在其上运行)然后我设置隧道映射本地端口3333到远程端口1099在VisualVM中我尝试使用端口3333上的jstatd进行连接…没有进程在EC2上出现了 这个链接说jstatd开辟了另一个端口: http : //rukuro-blog.heroku.com/2011/06/30/monitoring-remote-java-applications-with-visualvm …所以我从本地主机隧道传输了这个端口远程。 我重新启动了视觉vm …仍然没有 当我尝试使用folloing命令列出从EC2运行的进程时: jps -l -m -v rmi://localhost ……我得到了一份流程清单 当我在家用机器上列出它时 jps -l -m -v rmi://localhost:3333 ……我没有! 那么,rmi端口是不是与jstatd端口(3333)进行隧道连接……? jmx尝试: 我使用以下命令在远程计算机上启动了应用程序: java -Dcom.sun.management.jmxremote.port=3333 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false\ -cp :post/* …该应用程序工作,所以我隧道本地端口3333到远程3333 然后我尝试从visual vm界面设置一个jmx链接到localhost:3333:…它弹出一个错误说: cannot connect to localhost:3333 using service:jmx:rmi:///jndi/rmi://localhost:3333/jmxrmi 如果我需要设置删除RMI服务器的链接,我不知道该怎么做。 JMXMP尝试: 这有希望,但事情并不完全正确: 首先,我将jmx_remote jar添加到类路径中,并使用与上面显示的JMX情况相同的命令在远程计算机上启动应用程序。 我在oracle下载链接找到了jar 我从本地端口3333到远程端口3333设置了一个ssh隧道。然后我在calsspath中使用相同的jmx_remote文件启动了visualvm。 visualvm […]

从eclipse运行Visual VM

我正在尝试使用Eclipse kepler中的Visual VM调试Java应用程序。 我正在执行具有主要方法的类选择Visual VM作为启动器。 我按照http://blog.idrsolutions.com/2013/05/setting-up-visualvm-in-under-5-minutes中的说明配置了Visual VM。 我收到以下错误: An internal error occurred during: “Launching TestNew”. java.lang.NullPointerException “TestNew”是我尝试执行的main方法的类的名称。 请帮忙。

如何使用VisualVM来获取每个函数的成本

VisualVM对我来说是一个不错但有点复杂的工具。 我写了一个包含许多函数的类(在Eclipse中)。 如何获取每个函数调用的时间以及执行期间的成本时间信息?

衡量Java程序内存使用情况的最佳方法是什么?

我目前正在使用VisualVM ,但我遇到的问题是我无法保存它生成的图形。 我需要报告一些有关其内存使用情况和运行时间的数据,尽管使用System.nanoTime()很容易获得运行时间。 我也尝试过NetBeans探测器,但它不是我想要的,因为我不是在寻找会减慢速度的特定部件,所以这样就太过分了。 最大的问题是它占用了太多的处理时间。 另外,不要让我像VisualVM一样轻松捕获/传输数据,至少就我所知。 理想情况下,最好的方法是调用一些方法,因为我可以更容易地获取信息,但是像VisualVM这样的任何实际上让我保存图形的东西都可以。 与NetBeans分析器相比,VisualVM的性能也相当不错,但我认为这是因为我没有使用它的分析器。 我目前正在使用Ubuntu,但Windows 7很好。 我宁愿有一个专门做这个的程序,因为那些没有的程序得到的信息可能包括JVM和其他更好的东西。 好吧,显然,您可以保存当前会话的快照并最大化VisualVM中的窗口,这样您就可以使图表更大,拍摄快照并剪切它们……但这就是一种黑客行为。 更好的建议欢迎。

如何在VisualVM中显示调用树?

使用VisualVM分析应用程序的CPU时间时,可以在拍摄快照后看到“调用树”选项卡。 但在我的情况下,调用树只显示一些RMI TCP类和方法,但没有我的应用程序的单个类。 如何显示正确的呼叫树?

如何在Windows Server 2003下的本地系统帐户下运行jvisualvm.exe?

我使用Java 1.6 u 20在Windows Server 2003下运行GlassFish 3.0.1作为Windows服务,我一般都很高兴。 我希望能够在这个JVM上使用VisualVM并使用Unable将JConsole与作为Windows服务运行的Tomcat一起使用作为起点,但是从 PsTools\PsExec.exe -i -s “C:\Program Files\Java\jdk1.6.0_20\bin\jvisualvm.exe” 导致jvisualvm.exe和nbexec.exe进程显示在任务管理器中,SYSTEM作为用户,但我没有看到程序中的任何GUI,就像我自己手动运行它一样。 我从Windows 7登录远程桌面,以防万一。 其他有趣的观点: at 10:55 /interactive cmd.exe 报告已添加新作业,但未在10.55打开CMD窗口。 如何将VisualVM注册为服务的说明报告服务启动但没有显示GUI。 http://blogs.oracle.com/nbprofiler/entry/monitoring_java_processes_running_as 有没有人得到这个在Windows Server 2003下运行?