繁体   English   中英

Android垃圾收集器行为

[英]Android Garbage Collector behavior

好的,我知道有一些类似的问题,但是我在Android中找不到关于GC纯事实。

系统何时调用GC

android中的什么GC算作不需要的?

为什么GC跳过位图?

显示如何绕过GC的代码示例? (对象= null?)

GC对不需要的对象有什么作用?

其他重要事实...

**系统何时调用GC? android中的什么GC算作不需要的? **

在Android中,至少有5种不同的方式来调用垃圾收集器,这是常见的一种,我知道当您查看logcat时总是会看到这种情况。

GC_CUNCURRENT

它是在堆开始填满时触发的concurrent collection

GC_FOR_MALLOC

GC_CUNCURRENT无法及时完成并且堆已满,并且设备需要分配更多的内存时GC_CUNCURRENT调用该函数,然后触发此操作,直接执行垃圾回收。

GC_EXTERNAL_ALLOC

仅在API below HONEYCOMB调用此API below HONEYCOMB ,当您通过调用其recycle()方法将其释放给位图像素数据时触发该API below HONEYCOMB

GC_HPROF_DUMP_HEAP

DDMS创建hprof文件进行memory analyzation或查找memory leak时,将调用此方法。

GC_IMPLICIT

现在,当您通过System.gc()调用垃圾收集器本身时会调用此方法, 请注意:避免调用此方法,并且应该信任garbage collector

为什么GC会跳过位图?

那是因为您需要隐式调用Bitmap的recycle方法来调用垃圾回收器,以回收其位图像素数据。 HONEY and above中的每个位图都存储在dalvik heap

GC对不需要的对象有什么作用?

只要对象在某处具有reference ,就不会对其进行垃圾回收,并且会导致内存泄漏,您可以使用DDMS检查应用程序的内存泄漏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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