2010-08-21 47 views
6

我目前使用的VisualVM,但我遇到的問題是,我救不了它生成的圖表。我需要報告一些有關其內存使用情況和運行時間的數據,雖然運行時間很容易通過System.nanoTime()得到。我也嘗試了NetBeans配置文件,但這不是我想要的,因爲我不在尋找可能會減慢速度或降低速度的特定部件,所以這樣做會過時。最大的問題是它消耗了太多的處理時間。至少據我所知,也不會讓我輕易捕獲/傳輸數據,如VisualVM。測量Java程序內存使用情況的最佳方法?

理想的去了解這將是一些方法調用,因爲這樣我就能更方便地獲取信息了很多的最佳方式,但任何類似的VisualVM實際上讓我保存圖形是好的。與NetBeans分析器相比,使用VisualVM的性能相當不錯,但我想這是因爲我沒有使用它的分析器。

我目前使用Ubuntu,但Windows 7是罰款。我寧願有一個專門做這件事的程序,因爲程序得到的信息可能不包括JVM和其他更好的東西。

很明顯,您可以保存當前會話的快照並使VisualVM中的窗口最大化,這樣您就可以使圖表更大,拍攝快照並剪切它們......但這是一種破解。更好的建議歡迎。

回答

0

嘗試JProfiler。雖然它不是免費的,但您可以先試用評估版。

3

看那Runtime類。它有freeMemory,maxMemory和totalMemory。這可能足夠滿足您的需求。

0

HPjmeter控制檯是免費的。使用-Xloggc:<file>運行Java進程,並使用它打開<file>。您不僅可以保存會話,還可以比較運行。要考慮在命令行中包括的其他選項包括:

-XX:+PrintGCTimeStamps 
-XX:+PrintGCDetails 
2

您可能更喜歡優雅的方法來測量內存,而不是黑客圖像。 JConsole以監視應用程序而聞名JMX,它提供程序API。我想這是你需要的。

參見:Using JConsole to Monitor Applications

15
Runtime.getRuntime().freeMemory(); 

Runtime.getRuntime().totalMemory(); 
相關問題