Ran*_*ku' 63 android garbage-collection logcat
如果您看到Android日志,您可能会看到很多这样的事情.
他们的意思是什么,知道这些可能有助于我们做更好的内存分配.
例:
28470 dalvikvm D GC_FOR_MALLOC freed 665 objects / 239992 bytes in 71ms
28470 dalvikvm D GC_FOR_MALLOC freed 673 objects / 240288 bytes in 87ms
21940 dalvikvm D GC_EXPLICIT freed 4802 objects / 185320 bytes in 78ms
28470 dalvikvm D GC_FOR_MALLOC freed 666 objects / 240536 bytes in 63ms
Run Code Online (Sandbox Code Playgroud)
Rob*_*ert 122
GC_FOR_MALLOC表示GC已被触发,因为堆上没有足够的内存来执行分配.可能在创建新对象时触发.
GC_EXPLICIT表示已明确要求收集垃圾收集器,而不是由堆中的高水位标记触发.发生在整个地方,但最有可能是一个线程被杀死或者绑定器通信被取消.
还有其他几个:
GC_CONCURRENT当堆已达到要收集的特定数量的对象时触发.
GC_EXTERNAL_ALLOC意味着VM正在尝试减少用于可收集对象的内存量,以便为更多不可收集的内容腾出空间.
更新:在Android的更高版本中,第一个事件发生了名称更改.它现在称为"GC_FOR_ALLOC".还有一个新的事件,虽然在现代手机中非常罕见: GC_BEFORE_OOM意味着系统内存运行非常低,并且执行了最终GC,以避免调用低内存杀手.
jfr*_*z42 36
另一个解释Dalvik垃圾收集器消息的地方在此视频中:Google I/O 2011:Android应用程序的内存管理
在演示文稿大约14分钟后,他打破了消息格式.(顺便说一句,该视频在调试内存泄漏方面确实有很好的信息)
粗略地说,格式是 [Reason] [Amount Freed], [Heap Statistics], [External Memory Statistics], [Pause Time]
Robert/yuku已经提供了关于这些含义的信息.
例如 freed 2125K
自我解释
例如 47% free 6214K/11719K
这些数字反映了GC运行后的状况."47%免费"和6214K反映了当前的堆使用情况.11719K表示总堆大小.据我所知,堆可以增长/缩小,因此如果达到此限制,则不一定会出现OutOfMemoryError.
例如 external 7142K/8400K
注意:这可能只存在于前Honeycomb版本的Android(3.0之前版本)中.
在Honeycomb之前,位图在VM外部分配(例如,Bitmap.createBitmap()在外部分配位图,只在本地堆上分配几十个字节).外部分配的其他示例适用于java.nio.ByteBuffers.
如果它是并发GC事件,则会列出两次.一种是在GC之前暂停,一种是在GC大部分完成时暂停.例如paused 3ms+5ms
对于非并发GC事件,只有一个暂停时间,它通常要大得多.例如paused 87ms
Ran*_*ku' 27
我也在Android资源中找到了这个dalvik/vm/alloc/Heap.h.愿这有用.
typedef enum {
/* Not enough space for an "ordinary" Object to be allocated. */
GC_FOR_MALLOC,
/* Automatic GC triggered by exceeding a heap occupancy threshold. */
GC_CONCURRENT,
/* Explicit GC via Runtime.gc(), VMRuntime.gc(), or SIGUSR1. */
GC_EXPLICIT,
/* GC to try to reduce heap footprint to allow more non-GC'ed memory. */
GC_EXTERNAL_ALLOC,
/* GC to dump heap contents to a file, only used under WITH_HPROF */
GC_HPROF_DUMP_HEAP
} GcReason;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31097 次 |
| 最近记录: |