2017-10-12 65 views
0

我在BlueJ運行了幾個Java程序。我希望能夠知道程序對給定輸入值使用多少內存。有什麼辦法可以做到這一點?如何查找程序使用的內存量?

+0

你的問題可能與BlueJ無關。您可以使用其他IDE(或Java編譯器)。所以我想你需要刪除'bluej'標籤 –

回答

1

1),以獲得您的Java應用程序可以使用Runtime的最大內存量:多少內存JVM已經分配給您的應用程序

Runtime runtime = Runtime.getRuntime(); 
System.out.println("max memory: " + runtime.maxMemory()/1024); 

2)獲得:

Runtime runtime = Runtime.getRuntime(); 
System.out.println("allocated memory: " + runtime.totalMemory()/1024); 

3)獲得您的應用程序正在使用多少內存:

Runtime runtime = Runtime.getRuntime(); 
System.out.println("free memory: " + runtime.freeMemory()/1024); 
+1

這隻適用於通過Java分配的內存 –

+0

對於第一個答案Nod不好。爲了您未來的答案:適當地格式化代碼(用四個空格縮進),並且可能鏈接到相關文檔 –

0

它可能是operating system特定;值得注意的是JVM管理Java分配的內存,但您可能使用JNI(也就是您的Java程序調用OpenCV函數)使用JNI調用C++中的外部函數,並且您可能對當前的processvirtual address space感興趣。在Linux上,您可以使用proc(5)並閱讀並解析/proc/self/statm/proc/self/stat/proc/self/status。如果你的進程有pid 1234,你也可以在另一個終端上嘗試cat /proc/1234/maps,或者使用pmap(1)。在其他操作系統上,您需要深入瞭解相應的文檔。

如果您只關心JVM直接使用的內存,請使用Runtime class作爲answered by Hans

順便說一句,你的JVM有一個garbage collector,所以定義確切的內存使用量不是微不足道的。

相關問題