简体   繁体   中英

Can I get how much memory for my program remains?

My program has many works that need a lot of memory that I can't exactly know when I need to stop it, but in case there's very few memory left, I can force it stop using resources. So can I get how many remaining (in byte) memory that my program can use?

P/s: There's NO way to release the process memory. They need memory, as much as possible, and that is how it works (and, no trash for collector, since old ones still be need).

Try something like:

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() / 1000,
    memoryInfo.getTotalPrivateDirty() / 1000,
    memoryInfo.getTotalSharedDirty() / 1000);

You can read more at this blog: http://huenlil.pixnet.net/blog/post/26872625

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

While not perfect it should do the trick for the most part.

http://www.javaspecialists.eu/archive/Issue029.html http://www.exampledepot.com/egs/java.lang/GetHeapSize.html

在此处查看Android为内存跟踪提供的工具。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM