Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
测量Java程序内存使用情况的最佳方法?_Java_Profiler_Visualvm_Measurement_Memory Consumption - Fatal编程技术网

测量Java程序内存使用情况的最佳方法?

测量Java程序内存使用情况的最佳方法?,java,profiler,visualvm,measurement,memory-consumption,Java,Profiler,Visualvm,Measurement,Memory Consumption,我目前使用的是VisualVM,但我遇到的问题是无法保存它生成的图形。我需要报告一些关于内存使用和运行时间的数据,尽管使用System.nanoTime()很容易获得运行时间。我还尝试了NetBeans profiler,但这不是我想要的,因为我没有寻找会使其速度变慢的特定部分或任何东西,所以这太过分了。它最大的问题是占用了太多的处理时间。也不允许我像VisualVM一样轻松地捕获/传输数据,至少就我所知是这样 理想情况下,最好的方法是进行一些方法调用,因为这样我可以更容易地获取信息,但任何像V

我目前使用的是VisualVM,但我遇到的问题是无法保存它生成的图形。我需要报告一些关于内存使用和运行时间的数据,尽管使用
System.nanoTime()
很容易获得运行时间。我还尝试了NetBeans profiler,但这不是我想要的,因为我没有寻找会使其速度变慢的特定部分或任何东西,所以这太过分了。它最大的问题是占用了太多的处理时间。也不允许我像VisualVM一样轻松地捕获/传输数据,至少就我所知是这样

理想情况下,最好的方法是进行一些方法调用,因为这样我可以更容易地获取信息,但任何像VisualVM这样的方法都可以让我保存图形。与NetBeans分析器相比,VisualVM的性能也相当好,不过我想这是因为我没有使用它的分析器

我目前正在使用Ubuntu,但Windows7还可以。不过我更希望有一个专门做这项工作的程序,因为不做这项工作的程序所获得的信息可能包括JVM和其他最好忽略的东西

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

试试看。虽然不是免费的,但你可以先试用试用版。

看看这门课。它有freeMemory、maxMemory和totalMemory。对于您的目的来说,这可能已经足够近了。

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

-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails

您可能更喜欢优雅的方法来测量内存,而不是黑客图像。 众所周知,JConsole通过JMX监控应用程序,它提供程序API。我想这就是你需要的

见:

Runtime.getRuntime().freeMemory();

Runtime.getRuntime().totalMemory();