dex2oat进程优化

1、问题描述:
Tv端安装带插件App(微视听)启动,短期时间端内导致CPU消耗过大,从而导致其他进程system_server、PakeageInstaller等进程响应慢,PakeageInstaller出现ANR;

2、问题分析:
微视听app启动后,执行插件(apk、dex、jar)文件classLoader加载,导致系统对apk、dex、jar进行优化,会触发dex2oat进程对其进行优化,dex2oat默认启动的线程池数量为CPU核心数量,导致CPU被占满(adb shell top -m 8)可以查看进程使用cpu情况;
这个时刻,微视听申请用户授权,pageageInstaller程序弹窗显示,同一时刻运行的进程有(占用资源大的):dex2oat、system_server、微视听、pageageInstaller;
注意点:pageageInstaller授权通过system_server进程binder通讯,主线程被挂起

3、优化方案:
①pageageInstaller授权Binder通讯的代码使用线程调用,避免主线程被挂起
②dex2oat进程控制线程池数量,设置为CPU核心数量的一半;
art/dex2oat/dex2oat.cc line:507行

- thread_count_(sysconf(_SC_NPROCESSORS_CONF)),
+ thread_count_(sysconf(_SC_NPROCESSORS_CONF)/2),

方案②缺点:会导致apk在安装过程中,进行dex优化的过程变慢,从而安装时间边长

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容