1. Eclipse开发调试时会弹出如下log信息,
08-29 16:07:47.960: E/dalvikvm(3126):GC_CONCURRENT freed 66K, 18% free 33560K/40647K, paused 13ms+19ms,
total 106ms
2. log得种类:
- GC_MALLOC, 内存分配失败时触发
- GC_CONCURRENT,表示是在已分配内存达到一定量之后触发的GC
- GC_EXPLICIT,表示是应用程序调用System.gc、VMRuntime.gc接口或者收到SIGUSR1信号时触发的GC。
- GC_EXTERNAL_ALLOC,外部内存分配失败时触发
- GC_FOR_ALLOC 内存分配时,发现可用内存不够时触发的GC事件。
-
GC_FOR_MALLOC: 表示是在堆上分配对象时内存不足触发的GC。
-
GC_BEFORE_OOM: 表示是在准备抛OOM异常之前进行的最后努力而触发的GC。
-
实际上,GC_FOR_MALLOC、GC_CONCURRENT和GC_BEFORE_OOM三种类型的GC都是在分配对象的过程触发的。
本文探讨了DalvikVM虚拟机中触发GC的不同情况,包括GC_MALLOC(内存分配失败)、GC_CONCURRENT(达到内存阈值后自动触发)、GC_EXPLICIT(程序主动调用或信号触发)、GC_EXTERNAL_ALLOC(外部内存分配失败)、GC_FOR_ALLOC(分配内存不足触发)、GC_FOR_MALLOC(堆上分配对象内存不足)和GC_BEFORE_OOM(防止OOM异常前的GC尝试)。这些GC事件对于理解和优化Android应用的内存使用至关重要。
21

被折叠的 条评论
为什么被折叠?



