开发者

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开发者_如何学JAVA, 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


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


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.


Check out the tools that Android provides for memory tracking here.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜