Android 性能优化之黑科技开道(二)
💡
原文中文,约5200字,阅读约需13分钟。
📝
内容提要
本文介绍了Android中的黑科技,包括线程绑定大核、GC按捺和字节码插桩等。这些技术可以提高应用程序性能和启动速度,用于功能监控和数据优化。
🎯
关键要点
- 中心线程绑定大核可以提高应用程序性能,特别是UI和RenderThread等中心线程。
- 通过读取/sys/devices/system/cpu/目录下的文件,可以检查设备是否有大核和小核。
- 使用sched_setaffinity函数可以将线程绑定到指定的CPU核上。
- GC按捺是指在应用启动阶段减少或禁止垃圾回收,以提高启动速度。
- Android 10及以上版本对GC进行了优化,减少了启动阶段的GC次数。
- 可以通过Debug.getRuntimeStat获取GC的次数和耗时,以评估是否需要进行GC按捺。
- GC按捺的实现可以通过Hook技术,在ConcurrentGCTask的Run方法执行前进行休眠。
- 字节码插桩是一种在Android打包过程中修改字节码的技术,便于进行性能监控。
- 通过transform api可以在字节码转换为dex文件时进行插桩。
- 本文介绍的黑科技包括线程绑定、GC按捺和字节码插桩等,旨在提升Android应用的性能。
❓
延伸问答
什么是中心线程绑定大核?
中心线程绑定大核是将应用程序的中心线程(如UI线程)固定在高频率的大核上,以提高性能。
如何检查设备是否有大核和小核?
可以通过读取/sys/devices/system/cpu/目录下的文件来检查设备的核频率。
GC按捺的目的是什么?
GC按捺的目的是在应用启动阶段减少或禁止垃圾回收,以提高启动速度。
如何实现GC按捺?
GC按捺可以通过Hook技术,在ConcurrentGCTask的Run方法执行前进行休眠来实现。
字节码插桩的原理是什么?
字节码插桩是在Android打包过程中,通过ASM等工具在特定位置插入代码,以便进行性能监控。
Android 10及以上版本对GC的优化有哪些?
Android 10及以上版本通过提高后台GC的阈值,减少了启动阶段的GC次数,从而提升了启动速度。
➡️