在这里记录下编程开发的各种小技巧,帮助他人,成长自己。

  • Dalvik 垃圾回收日志消息格式:

    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>

    1. ​GC_CONCURRENT:当堆内存增长到一定程度时会触发,并发的回收内存
    2. GC_FOR_MALLOC:堆已满而系统不得不停止您的应用并回收内存时,您的应用尝试分配内存而引起的垃圾回收
    3. GC_HPROF_DUMP_HEAP:当您请求创建 HPROF 文件来分析堆时出现的垃圾回收
    4. GC_EXPLICIT:显式垃圾回收,例如当您调用 System.gc() 时
    5. GC_EXTERNAL_MALLOC:(API 级别 10 及更低级别)外部分配内存的垃圾回收(例如存储在原生内存或 NIO 字节缓冲区中的像素数据)
    <Amount_freed>
    ​    从此次垃圾回收中回收的内存量。
    <Heap_stats>

        堆的可用空间百分比与(活动对象数量)/(堆总大小)

    <External_memory_stats>

        API 级别 10 及更低级别的外部分配内存(已分配内存量)/(发生回收的限值)

    <Pause_time>

        堆越大,暂停时间越长。在 GC_CONCURRENT 回收时,会显示两个时间值:一个出现在回收开始时,另一个出现在回收快要完成时