反正我们可以在Android中监控GC事件吗?
在Java中,我相信我们可以听取这些事件 http://www.fasterj.com/articles/gcnotifs.shtml 但是java.lang.management API在Android中不可用。
反正我们可以在Android中监控GC事件吗?
在Java中,我相信我们可以听取这些事件 http://www.fasterj.com/articles/gcnotifs.shtml 但是java.lang.management API在Android中不可用。
为什么你想要这个监听器。如果您只是想知道您的应用是否内存不足,请检查以下内容:
当内存变紧时释放内存
在应用程序生命周期的任何阶段,onTrimMemory()回调还会告诉您整个设备内存何时变低。您应该根据onTrimMemory()提供的以下内存级别进一步释放资源:
TRIM_MEMORY_RUNNING_CRITICAL 您的应用程序仍在运行,但系统已经杀死了LRU缓存中的大多数进程,因此您应该立即释放所有非关键资源。如果系统无法回收足够数量的RAM,它将清除所有LRU缓存并开始终止系统更喜欢保持活动的进程,例如托管正在运行的服务的进程。 此外,当您的应用程序进程当前被缓存时,您可能会从onTrimMemory()收到以下级别之一:
TRIM_MEMORY_BACKGROUND 系统内存不足,您的进程接近LRU列表的开头。虽然您的应用程序进程没有被杀死的高风险,但系统可能已经杀死了LRU缓存中的进程。您应该释放易于恢复的资源,这样您的进程将保留在列表中,并在用户返回应用程序时快速恢复。
这是参考链接 https://developer.android.com/training/articles/memory.html
好吧,dalvik和艺术都会有所不同。
基本上你可以指示adb shell在跟踪文件中记录GC事件。
艺术: https://source.android.com/devices/tech/dalvik/gc-debug.html
对于art和dalvik来说,它甚至可能是相同的adb命令。
内存监视器工具在android studio中为您显示内存图形图表时会插入此内容。
Progamically,可能更难。看看FB如何执行他们的性能工具,因为我相信他们正在从本机C / C ++端进行GC事件计数,并将它们整理到flatbuffer中,以便他们的Java端分析工具代码可以访问..