2011-06-24 49 views
4

我的程序有很多需要大量內存的作品,當我需要停止時,我無法準確知道,但如果內存很少,我可以強制停止使用資源。那麼我可以得到我的程序可以使用多少剩餘(字節)內存?我可以得到我的程序有多少內存?

P/s:沒有辦法釋放進程內存。他們儘可能地需要記憶,這就是它的工作原理(並且沒有收集者的垃圾,因爲仍然需要舊的垃圾)。

回答

9

試着這麼做:

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://huenlil.pixnet.net/blog/post/26872625

+0

謝謝,你的回答是非常非常詳細的,還有其他有用的信息,以及:) – AndBie

+0

你可以將它標記爲已回答,將其從未答覆的列表中取出。 – Kenny

+2

這是一個很好的解決方案@Kenny。 – yep

1
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;  
} 

雖然不完美,它應該做大部分的伎倆。

相關問題