我的程序有很多需要大量內存的作品,當我需要停止時,我無法準確知道,但如果內存很少,我可以強制停止使用資源。那麼我可以得到我的程序可以使用多少剩餘(字節)內存?我可以得到我的程序有多少內存?
P/s:沒有辦法釋放進程內存。他們儘可能地需要記憶,這就是它的工作原理(並且沒有收集者的垃圾,因爲仍然需要舊的垃圾)。
我的程序有很多需要大量內存的作品,當我需要停止時,我無法準確知道,但如果內存很少,我可以強制停止使用資源。那麼我可以得到我的程序可以使用多少剩餘(字節)內存?我可以得到我的程序有多少內存?
P/s:沒有辦法釋放進程內存。他們儘可能地需要記憶,這就是它的工作原理(並且沒有收集者的垃圾,因爲仍然需要舊的垃圾)。
試着這麼做:
Debug.MemoryInfo memoryInfo = new Debug.MemoryInfo();
Debug.getMemoryInfo(memoryInfo);
String memMessage = String.format("Memory: Pss=%.2f MB,
Private=%.2f MB, Shared=%.2f MB",
memoryInfo.getTotalPss()/1024.0,
memoryInfo.getTotalPrivateDirty()/1024.0,
memoryInfo.getTotalSharedDirty()/1024.0);
http://www.javaspecialists.eu/archive/Issue029.html http://www.exampledepot.com/egs/java.lang/GetHeapSize.html
謝謝,您的第二個鏈接對於快速研究很有用。 +1 :) – AndBie
沒問題對不起,我沒有寫任何東西,並不意味着與你或任何東西短,只是不知道的細節,超過這些頁面可以解釋,有趣的問題。 – shaunhusain
查看Android爲內存跟蹤here提供的工具。
public static long getCurrentFreeMemoryBytes() {
long heapSize = Runtime.getRuntime().totalMemory();
long heapRemaining = Runtime.getRuntime().freeMemory();
long nativeUsage = Debug.getNativeHeapAllocatedSize();
return Runtime.getRuntime().maxMemory() - (heapSize - heapRemaining) - nativeUsage;
}
雖然不完美,它應該做大部分的伎倆。
謝謝,你的回答是非常非常詳細的,還有其他有用的信息,以及:) – AndBie
你可以將它標記爲已回答,將其從未答覆的列表中取出。 – Kenny
這是一個很好的解決方案@Kenny。 – yep