2014-10-29 95 views

回答

9

为什么你想要这个监听器。如果你只是想知道,如果您的应用程序运行内存只是检查:

释放内存,内存变紧

在您的应用程序生命周期的任何阶段,onTrimMemory()回调也告诉你当整体设备内存越来越低。你应该通过进一步释放基于()由onTrimMemory交付以下内存资源水平作出回应:

  • TRIM_MEMORY_RUNNING_MODERATE 您的应用程序正在运行,并且没有考虑killable,但在设备运行内存不足,系统正在积极杀害LRU缓存中的进程。
  • TRIM_MEMORY_RUNNING_LOW 您的应用程序正在运行,但不被认为可以杀死,但是设备在内存上的运行要低得多,所以您应该释放未使用的资源以提高系统性能(这会直接影响应用程序的性能)。
  • TRIM_MEMORY_RUNNING_CRITICAL 您的应用程序仍在运行,但系统已经杀死了LRU缓存中的大部分进程,因此您应该立即释放所有非关键资源。如果系统无法回收足够数量的RAM,它将清除所有的LRU缓存,并开始杀死系统希望保持活动的进程,例如托管正在运行的服务的进程。 此外,当你的应用程序是当前缓存,您可能会收到来自onTrimMemory以下级别()中的一个:

  • TRIM_MEMORY_BACKGROUND 在系统运行时内存不足,你的过程是接近LRU列表的开头。虽然您的应用程序进程没有被杀死的高风险,但系统可能已经在杀死LRU缓存中的进程。您应该释放容易恢复的资源,以便您的过程保留在列表中,并在用户返回到您的应用时快速恢复。

  • TRIM_MEMORY_MODERATE 系统内存不足,进程接近LRU列表的中间位置。如果系统进一步受限于内存,那么您的进程就有可能被杀死。
  • TRIM_MEMORY_COMPLETE 系统内存不足,如果系统现在没有恢复内存,那么您的进程是第一个被终止的进程之一。您应该释放对恢复应用状态不重要的所有内容。 因为onTrimMemory()回调已添加到API级别14中,所以可以使用onLowMemory()回调作为旧版本的回退,这大致等同于TRIM_MEMORY_COMPLETE事件。

下面是引用链接https://developer.android.com/training/articles/memory.html

3

好吧,这将是双方的Dalvik和技术不同..

基本上可以指导亚行外壳,记录在一个跟踪文件中的GC事件..

艺术:https://source.android.com/devices/tech/dalvik/gc-debug.html

它甚至可能是艺术和Dalvik的同亚行的命令。

当它在android studio中为你显示内存的图形图表时,内存监视器工具会插入此内存中。

在编程上,可能会更困难..看看FB如何执行它们的性能工具,因为我相信他们正在从本地C/C++端执行GC事件计数,并将它们放在flatbuffer中用于其Java代码剖析工具代码访问..