Tag: 测量

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

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

测量代码段的Java执行时间,内存使用和CPU负载

对于特定的Java代码段,我想测量: 执行时间(很可能是线程执行时间 ) 内存使用情况 CPU负载(特别是可归因于代码段) 我是相对Java的新手,并不熟悉如何实现这一点。 我已经被提到了JMX ,但是我不确定如何使用JMX,JMX看起来有点“重”我正在做什么。 理想情况下,我想要一些可以告诉我想测量的测量类,可以选择在代码段之前调用start()方法,然后调用stop()方法。 相关指标将记录到我指定的文件中。 例如: import com.example.metricLogger; metricLogger logger = new metricLogger(); logger.setLogPath(pathToLogFile); logger.monitor(executionTime); logger.monitor(memoryUsage); logger.monitor(cpuLoad); logger.start(); /* Code to be measured */ logger.stop(); 在Java中是否有任何标准/通用/传统方式来实现这一目标? 这些测量用于一次性性能比较,因此我不会寻找任何生产中的长期监测过程。 我很高兴被引用到教程或外部示例,并且不希望在这里得到完整答案。 也就是说,如果能够实现上述任何简单的事情,那么一个现实的例子就会非常顺利。