ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android JIT带来的虚拟机崩溃问题及解决方案

2021-09-06 20:30:29  阅读:437  来源: 互联网

标签:dalvik 虚拟机 vm mk APK JIT Android


Android JIT带来的虚拟机崩溃问题及解决方案
报错日志

backtrace:
    #00 pc 00033cf8  /dev/ashmem/dalvik-jit-code-cache (deleted)
    #01 pc 00033ea1  /dev/ashmem/dalvik-jit-code-cache (deleted)

这些LOG和帖子当中提到的问题看起来一样,我就试着把JIT给关闭了,果真问题不存在了。

下面记录一下Android系统是如何配置JIT的。

/build/core/combo/TARGET_linux-arm.mk中有这样一段

Enable the Dalvik JIT compiler if not already specified.

ifeq ($(strip $(WITH_JIT)),)

    WITH_JIT := true

endif

默认情况下,JIT是打开的,这里就是JIT的总开关。如果要关闭,可以在这段代码前面加上WITH_JIT := false

WITH_JIT控制JIT是否打开时,会影响到两个库:libandroid_runtime.so和libdvm.so,控制代码分别在

/frameworks/base/core/jni/Android.mk、/dalvik/vm/Android.mk和/dalvik/vm

/Dvm.mk这三个Makefile中,可以在这里搜索一个WITH_JIT查看一下。

如何觉得上面这个比较暴力,也可以用温柔一点儿的方法:

修改/system/build.prop build.prop

在最后一行添加:

dalvik.vm.execution-mode=int:jit(开启JIT)

dalvik.vm.execution-mode=int:fast(关闭JIT)

这样的话,APK是稳定了,JIT的速度优势却也没了,毕竟出问题的APK只是一小部分。我这里最后发包时还是打开了,让应用程序开发者在APK里

去关闭吧。只要在APK的AndroidManifest.xml中把的Android:vmSafeMode属

性设置true就可以对APK禁用JIT。

标签:dalvik,虚拟机,vm,mk,APK,JIT,Android
来源: https://blog.csdn.net/wq892373445/article/details/120143957

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有