D/dalvikvm: <GC_Reason> <Amount_freed>, <Heap_stats>, <External_memory_stats>, <Pause_time>
每隔一段时间,系统回收器都会打印内存回收的情况。日志的内容格式就是上面那条格式。下面是详细说明
<回收原因><回收内存总数><可用内存百分比><外部内存状态 ><回收占用时间>
D/dalvikvm( 9050): GC_CONCURRENT freed 2049K, 65% free 3571K/9991K, external 4703K/5261K, paused 2ms+2ms
GC Reason GC回收原因(是什么触发了回收,回收的类型是什么)包含以下类型
GC_CONCURRENT 并发回收
在你的程序堆栈将达到最大值的时候,并发的回收内存。
GC_FOR_MALLOC 分配时回收
如果你的程序请求内存但此时堆栈已经是满了,这样的话系统会停止你的程序并回收内存。
GC_HPROF_DUMP_HEAP 当你创建HPROF文件分析内存堆栈的时候。
GC_EXPLICIT 精确释放
程序中明确要求回收内存,比如调用gc(最好避免主动调用应当相信回收器会自动在需要的时候回收内存的)
GC_EXTERNAL_ALLOC
This happens only on API level 10 and lower (newer versions allocate everything in the Dalvik heap). A garbage collection for externally allocated memory (such as the pixel data stored in native memory or NIO byte buffers).
Amount freed
回收内存总数
回收器回收的内存总数。
Heap stats
可用内存百分比
可用内存百分比=100%-已用内存/可用内存
外部内存状态
只有API 10或以下的设备才会有。已分配内存/可分用内存总数
Pause time
回收占用时间
越大的内存堆栈回收需要的时间越长。并发释放时间有两个一个是回收开始时,一个是接近完成时的时间。