在运行我的应用程序时,我有这种日志:
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
有谁知道这些日志是什么意思?提前致谢!
谢谢!
jfr*_*z42 44
另一个解释Dalvik垃圾收集器消息的地方在此视频中:Google I/O 2011:Android应用程序的内存管理
在演示文稿大约14分钟后,他打破了消息格式.(顺便说一句,该视频在调试内存泄漏方面确实有很好的信息)
粗略地说,格式是 [Reason] [Amount Freed], [Heap Statistics], [External Memory Statistics], [Pause Time]
维克多/罗伯特已经说明GC_CONCURRENT,GC_FOR_MALLOC,GC_EXTERNAL_ALLOC.
还有:
GC_HPROF_DUMP_HEAP - 如果通过单击DDMS中的"转储堆"按钮或以编程方式转储堆
GC_EXPLICIT - 如果你打电话给System.gc()
例如 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
Vik*_*tor 14
我也在寻找这些信息.
GC代表垃圾收集器,它在应用程序运行时收集未使用的对象.
请注意,所有的这些信息是基于从后罗伯特上发布一个类似的问题在这里的计算器.所有信用(只要这是正确的)归罗伯特.
| 归档时间: |
|
| 查看次数: |
11404 次 |
| 最近记录: |