6.10 Logcat
Logcat实际上是分析系统、App性能和运行情况的重要工具。以前笔者在开发ROM的时候,大部分情况下都是无法复现测试所提的BUG的。这时候就只能根据Log日志来进行分析。Android的Logcat日志系统非常强大,其中包含了很多有用的信息。内存这一部分系统在进行GC时,会使用以下五种Log信号标记GC过程。
- GC_CONCURRENT:当堆内存块被用完的时候,就会触发这个GC信号量,该信号量是常规内存检查,属于并发GC。
- GC_FOR_MALLOC:堆内存已经满了,此时又要试图分配新的内存,因此系统要回收内存,就会触发这个GC信号量。该信号量会引起主线程暂停,从而导致UI阻塞。
- GC_EXPLICIT:系统调用System.gc()或者在Heap工具中手动GC等释放内存信号量时,就会触发这个GC信号量。
- GC_BEFORE_OOM:表示系统即将触达OOM阈值,此时就会触发这个GC信号量。
- GC_HPROF_DUMP_HEAP:该信号量比较特殊,在使用Dump Heap工具时,系统会触发这个GC信号量。
由此可见,系统的Logcat日志数据,实际上是非常全面、有用的。只不过日志信息很多,导致分析起来需要很强的耐心和丰富的经验。
