【问题标题】:Android logs 'GC_EXTERNAL_ALLOC' 'GC_FOR_MALLOC'Android 记录 'GC_EXTERNAL_ALLOC' 'GC_FOR_MALLOC'
【发布时间】:2011-05-31 20:21:09
【问题描述】:

在运行我的应用程序时,我得到了这样的日志:

GC_EXTERNAL_ALLOC 释放 2K,释放 38% 8772K/14087K,外部 17480K/17998K,暂停 87ms
GC_FOR_MALLOC 释放 0K,释放 38% 8772K/14087K,外部 17480K/17998K,暂停 67ms
GC_CONCURRENT释放2125K,47%释放6214K/11719K,外部7142K/8400K,暂停3ms+5ms

有人知道这些日志是什么意思吗?提前致谢!

  1. “GC_EXTERNAL_ALLOC”、“GC_FOR_MALLOC”和“GC_CONCURRENT”有什么区别。还有其他一些“GC”事件吗?
  2. “38% 免费 8772K/14087K”是什么意思?什么是“8772K”,什么是“14087K”?
  3. “外部 17480K/17998K”是什么意思?什么是“17480K”,什么是“17998K”?

谢谢!

【问题讨论】:

    标签: android logging


    【解决方案1】:

    另一个解释 Dalvik 垃圾收集器消息的地方是这个视频:Google I/O 2011: Memory management for Android Apps

    在演示开始大约 14 分钟时,他分解了消息格式。 (顺便说一句,该视频在调试内存泄漏方面提供了非常好的信息)

    大致的格式是[Reason] [Amount Freed], [Heap Statistics], [External Memory Statistics], [Pause Time]

    原因

    Viktor/Robert 已经解释过GC_CONCURRENTGC_FOR_MALLOCGC_EXTERNAL_ALLOC

    还有:

    • GC_HPROF_DUMP_HEAP - 如果您通过单击 DDMS 中的“转储堆”按钮或以编程方式转储堆

    • GC_EXPLICIT - 如果你调用 System.gc()

    释放量

    例如freed 2125K

    不言自明

    堆统计

    例如47% free 6214K/11719K

    这些数字反映了 GC 运行后的情况。 “47% free”和 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

    【讨论】:

      【解决方案2】:

      我也在寻找这个信息。

      GC 代表垃圾收集器,它在您的应用程序运行期间收集未使用的对象。

        • GC_EXTERNAL_ALLOC:表示 VM 正在尝试减少使用可收集对象的内存量,为不可收集对象腾出空间。
        • GC_FOR_MALLOC:表示GC被触发是因为堆上没有足够的内存来执行分配。可能会在创建新对象时触发。
        • GC_CONCURRENT:当堆达到一定数量的要收集的对象时触发。
      1. 我猜测 38% 的空闲意味着 38% 的堆未使用。 8772K 是堆上已用内存的大小,14087K 是堆的大小。
      2. 我不知道,抱歉。

      请注意,所有这些信息均基于 Robert 发布的关于在 stackoverflow 上发布 here 的类似问题的帖子。所有功劳(只要这是正确的)归罗伯特所有。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多