[英]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.