是否有Java的远程分析器? (最好使用JMX)

时间:2009-09-23 19:36:35

标签: java performance optimization memory profiler

我正在尝试确定在unix上运行的独立Java程序的内存泄漏问题。我有端口和参数设置,以便我可以使用JMX与JConsole或VisualVM连接到它。

那些帮助有点但不幸的是它并没有告诉你内存的去向,它只告诉你使用了多少内存。我正在寻找一个更详细的分析器来帮助我找到正在耗尽我记忆的物体。有人有主意吗?最好是在JMX端口上进行通信,因此我不必重新配置程序。谢谢!

4 个答案:

答案 0 :(得分:3)

如果有问题的机器安装了X11客户端库,并且有一个允许X11转发的可访问ssh服务器,以及在本地计算机上运行的X11服务器(可能是http://sourceforge.net/projects/xming/)  并且您使用Sun Java 6u10或更高版本,您可以在Linux框中使用ssh(使用-X或-Y),并在本地计算机上显示其GUI界面时运行jvisualvm

在同一台机器上运行允许jvisualvm直接连接到正在运行的Java进程,而不是执行各种配置voodoo。

答案 1 :(得分:1)

NetBeans Java Profiler支持远程JVM的分析。可以使用JMX将NetBeans连接到远程JVM。

presentation available on the JavaPassion site提供了一些关于如何开始的指示。

答案 2 :(得分:0)

我看了几个,最喜欢YourKit

到目前为止,它是最容易使用的,并且与JMX配合使用。

答案 3 :(得分:0)

嗯......实际上,VisualVM有一个excellent memory profiler,不仅可以告诉你哪些对象占用你的记忆,还可以告诉你它们(或许是无意中被引用)的位置。

只需按下“监视器”选项卡上的“堆转储”按钮即可惊叹!