2016-12-06 69 views
1

我很難理解如何監控JVM堆的使用情況。我讀過多個線程,他們都使用相同的模式,從這個來源採取:https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryPoolMXBean.html實時監控JVM的堆使用情況

但是,偵聽器從來沒有接縫觸發事件。我只希望能夠在GUI中實時顯示JVM的當前堆大小。我怎樣才能做到這一點?

+1

從正在運行的JVM進程還是從外部程序運行?你的代碼在哪裏? – Qix

回答

1

Jvisualvm工具是你所需要的,它在你的jdk的bin倉庫中,搜索jvisualvm.exe並啓動它,你可以實時檢查你的堆和permgen記憶。

+1

嗯,我想在我的GUI中顯示它在JTextArea中:/ – Zorobay

+2

@Zorobay然後你正在尋找'Runtime.getRuntime()。freeMemory()'和'Runtime.getRuntime()。totalMemory()' – Jire

+0

如果你想在GUI中顯示它,我認爲這篇文章可以提供幫助:http://stackoverflow.com/questions/17364820/running-a-exe-file-inside-java-code這種方式你可以從GUI調用jvisualvm –

1

對於此用例,您不需要JMX。

Runtime.getRuntime().totalMemory(); 

...和Runtime中的類似方法,給你即時的記憶信息。設置一個調度程序來執行此操作並更新您的GUI。

當然,如果你想在外部監控這種事情,JMX很有價值。

+0

我可能會用這個,謝謝。儘管如此,它並沒有像只是在聽一個變化一樣優化...... :( – Zorobay

+0

,如果你想生成一個圖表。在一個循環中輪詢這個,你將有必要的信息來生成圖表 – Acewin