6

我目前正在使用VisualVM,但我遇到的问题是我无法保存它生成的图表。我需要报告一些关于它的内存使用和运行时间的数据,虽然运行时间很容易得到System.nanoTime()。我也尝试过NetBeans 分析器,但这不是我想要的,因为我不是在寻找会减慢它的特定部分或任何东西,所以这将是矫枉过正。它最大的问题是它占用了太多的处理时间。至少据我所知,我也不像 VisualVM 那样轻松地捕获/传输数据。

理想情况下,最好的方法是调用一些方法,因为这样我就可以更轻松地获取信息,但是像 VisualVM 这样实际上可以让我保存图形的任何东西都很好。与 NetBeans 分析器相比,VisualVM 的性能也相当不错,但我想那是因为我没有使用它的分析器。

我目前正在使用 Ubuntu,但 Windows 7 很好。不过,我宁愿有一个专门从事此工作的程序,因为不这样做的程序获得的信息可能包括 JVM 和其他最好省略的东西。

好吧,显然,您可以保存当前会话的快照并在 VisualVM 中最大化窗口,这样您就可以使图表更大,拍摄快照并剪切它们......但这是一种黑客行为。欢迎提出更好的建议。

4

5 回答 5

15
Runtime.getRuntime().freeMemory();

Runtime.getRuntime().totalMemory();
于 2010-08-21T08:34:46.107 回答
3

查看运行时类。它有freeMemory、maxMemory 和totalMemory。对于您的目的,这可能已经足够接近了。

于 2010-08-21T03:52:32.463 回答
2

您可能更喜欢优雅的方法来测量内存,而不是 hack 图像。JConsole 以通过JMX监控应用程序而闻名,它提供程序 API。我想这是你需要的。

请参阅:使用 JConsole 监控应用程序

于 2010-08-21T08:20:17.827 回答
0

尝试JProfiler。虽然它不是免费的,但您可以先试用评估版。

于 2010-08-21T03:27:38.520 回答
0

HPjmeter控制台是免费的。运行您的 Java 进程-Xloggc:<file>并使用它打开<file>。您不仅可以保存会话,还可以比较运行。其他要考虑包含在命令行中的选项是:

-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
于 2010-08-21T04:12:42.253 回答