Android应用程序中的内存指标

anb*_*ber 5 android memory-management out-of-memory

我写了Android应用程序,它的内存不足异常有一些奇怪的问题,它是随机出现的。是的,我知道OOM异常的问题通常是由于图像引起的,我尽力避免了此问题。我认为可以找到占用内存的地方的唯一方法是将包含有关内存信息的日志放到任何地方。但是我真的很困惑我需要哪些值。

我使用了下一个值:

  • Runtime.getRuntime()。maxMemory()
  • Runtime.getRuntime()。freeMemory()
  • Runtime.getRuntime()。totalMemory()
  • Debug.getNativeHeapAllocatedSize()
  • Debug.getNativeHeapFreeSize()
  • Debug.getNativeHeapSize()

在OOM异常之前,我有下一个值:

  • 最大内存:57344K
  • freeMemory:9581K
  • 总内存:22407K
  • NativeHeapAllocatedSize:34853K
  • NativeHeapFreeSize:302K
  • 本机堆大小:40060K
  • lowMemory错误

在这个问题上的Android位图限制-防止java.lang.OutOfMemory我看到用compeering((reqsize + Debug.getNativeHeapAllocatedSize()+ heapPad)> =调用Runtime.getRuntime()maxMemory()。)蚂蚁在这个博客的一些奇怪的信息:

Debug.getNativeHeapFreeSize(); 可用大小是由于碎片或资源分配而未使用的堆中的内存量。

另外我不明白如果(totalMemory:22407K)比(maxMemory:57344K)小得多,可能是OOM异常。

请帮助我了解如何使用此值。