1.扩展的JNI检测

JNI(Java native Interface)是Java本地接口,提供了Java语言程序调用本地(C/C++)代码的方法。为了能触发CheckJNI标志位,第二种特性是dalvik.vm.checkjni,它的值覆盖了ro.kernel.Android.checkjni的值。如果这个特性没有被定义,dalvik.vm.checkjni也没有设置成false,那么-Xcheck:jni标志位就没有传入,JNI检测也就没有是能。

打开JNI检测,使用以下命令:

adbshell setprop dalvik.vm.checkjni true

也可以通过系统特性将JNI检测选项传递给虚拟机,dalvik.vm.jniopts的值可以通过-Xjniopts参数,命令如下:

adb shellsetprop dalvik.vm.jniopts forcecopy

2.断言

设置dalvik.vm.enableassertions特性  dalvikm -ea..

命令如下:

adbshell setprop dalvik.vm.enableassertin all

3.字节码校验和优化

adbshell setprop dalvik.vm.dexopt-flags v=a o=v

那么Android框架将-Xverfy:all-Xdexopt:verified传递给虚拟机,使能校验并且只优化校验成功的class。这是最安全的设定,也是默认的。

使能校验使得dexopt命令明显花费更多时间,因为校验过程相对较慢,一旦校验和优化过的dex文件准备就绪,校验就不会占用额外的开销,除非在加载与校验失败的class。

adbshell "rm /data/dalvik-cache/*"  它删除了暂存的dex文件,记住终止在打开运行时(adb shell stop: adb shell start).

4.Dalvik的运行模式

当前Dalvik VM的实现包括三个独立的解释内核:“快速”、“可移植”、“调试”.快速解释器是为当前平台优化的,可能包括手动优化的汇编文件;相对的,可移植解释器用C语言写的,可以在广泛的平台上使用;

Dalvik vm允许用户通过-Xint参数在快速、可移植和JIT中选择,如为了选择可移植解释器,命令如下:

adb shell setpropdalvik.vm.execution-mode int:portable

5.死锁预测

如果虚拟机以WITH_DEADLOCK_PREDICTION参数编译,那么死锁预测器会在-Xdeadlockpredict参数中是能。

6.dump堆栈追踪

dalvik收到SIGQUIT,会为所有的线程dump所有的堆栈追踪。默认写入Android的日志,但是也可以写入一个文件。

dalvik.vm.stack-trace-file特性允许你指定将线程堆栈跟踪写入文件名,如果不存在,将创建,新的信息将最佳到文件尾

adbshell setprop dalvik.vm.stack-trace-file /tmp/stack-traces.txt

7.dex文件和校验

为了快速诊断这种失败,虚拟机提供了-Xchekdexsum参数,如果设置了该参数,在内容被使用之前所有的.dex文件会进行和检验。

adbshell setprop dalvk.vm.check-dex-sum true

8.产生标志位

在Honeycomb版本引入了汇编,通过标志位写入虚拟机。

adb shell setprop dalvik.vm.extra-opts "flag1flag2...flagN"

Dalvik控制VM详解相关推荐

  1. oracle控制文件都一样么,Oracle控制文件详解

    一.Oracle控制文件 为二进制文件,初始化大小由CREATEDATABASE指定,可以使用RMAN备份 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等 ...

  2. python的turtle怎么设置rgb颜色_Python : turtle色彩控制实例详解

    ? 1 turtle.pencolor(* args ) 返回或设置pencolor. 允许四种输入格式: ? 1 pencolor() 将当前的pencolor返回为颜色规范字符串或元组(参见示例) ...

  3. 远程访问及控制(详解)——SSH远程管理及TCP Wrappers 访问控制

    远程访问及控制(详解)--SSH远程管理及TCP Wrappers 访问控制 一.SSH远程管理 1.定义 2.优点 3.客户端与服务端 4.SSH服务的开启.端口号和配置文件 二.配置 OpenSS ...

  4. ThinkPHP的RBAC(基于角色权限控制)详解

    ThinkPHP的RBAC(基于角色权限控制)详解 一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到 ...

  5. M1卡区块控制位详解

    M1卡区块控制位详解 Mifare 1S50/Mifare 1S70 每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取 控制.存取控制为4个字节,共32位,扇区中的每个块(包括 ...

  6. 单片机控制两个步进电机画圆_基于单片机的步进电机转速控制设计详解(附程序)...

    步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角.这 ...

  7. 《前端》权限链接--vue前端权限控制方案详解附demo_feiyu_may的博客-CSDN博客_vue 前端权限

    前端权限控制 - 潘正 - 博客园  https://www.cnblogs.com/guchengnan/p/11800947.html vue前端权限控制方案详解附demo_feiyu_may的博 ...

  8. 增程式发动机仿真控制逻辑详解(一)

    本文转载在我的微信公众号:古德曼汽车工业. 希望关注本专栏的朋友,也能一并关注微信公众号. 原文地址:增程式发动机仿真控制逻辑详解(一) 1.前言 本订阅号的一个特色就是,你们都猜不到[思想]下一次更 ...

  9. android系统息屏设置_Android亮屏和熄屏控制实例详解

    本文实例讲述了Android亮屏和熄屏控制实现方法.分享给大家供大家参考,具体如下: 一.概述 我们的Android应用程序很多需要和亮屏和熄屏打交道,比如闹钟的时候,需要保持亮屏,之后又需要熄屏.那 ...

最新文章

  1. 13.2. Mount partition
  2. 变频器怎么设置_如何利用串口调试软件与变频器通信?
  3. 【题解】洛谷P1541 [NOIP2010TG] 乌龟棋(类似背包的DP)
  4. 新浪微博客户端(eoe)
  5. 文件授权以及查看系统的一些信息命令
  6. java 自旋方法_JAVA循环使用CAS实现自旋操作
  7. Dubbo基础知识总结
  8. 开发一个大型后台管理系统,真的需要用前后端分离的技术方案吗?
  9. python学爬虫、还没放出来_Python 爬虫学习没思路?可以看看这篇文章
  10. 【转载】一份不可多得的深度学习技巧指南
  11. 计算机原理内存详解,【讲给小白的计算机原理】什么是内存,内存的作用?
  12. TCP滑动窗口协议作用
  13. VS2005 安装WTL
  14. 凡人修仙传显示无法连接服务器,凡人修仙传进不去 无法连接服务器 登陆失败 闪退 黑屏...
  15. 网易博客日志:《数字滤波器》交流-6-LMS算法的训练及工作阶段
  16. 今日恐慌与贪婪指数为10 恐慌程度有所上升
  17. 锐捷路由器如何配置虚拟服务器,锐捷路由器配置命令完美宝典
  18. van-icon自定义图标的引入
  19. U盘安装CentOS7 解决各种问题
  20. c语言字母分别代表的意思,C语言中%c,%s分别代表什么意思? 在C语言中c% 和 d% 是表示什么意思?...

热门文章

  1. 进口配额管理和出口配额管理_SAP采购管理模块中的quot;配额协议quot;应用详解...
  2. Python处理pdf文件库 - PyPDF2详解
  3. C/C++浮点数在内存中的存储方式
  4. 【Qt】Qt登录对话框(纯代码实现)
  5. 【Linux】一步一步学Linux——mv命令(30)
  6. 改变窗口背景_办公软件操作技巧063:如何设置ppt母版背景
  7. 跑三小时的monkey测试该怎么算_百亿次的锤炼 - 带逛Dragonboat的各类测试
  8. 每天一道LeetCode-----重排链表,节点顺序是从头取一个,从尾取一个,从头取一个,从尾取一个.....
  9. postmethod 设置request body utf-8_Cypress系列(62) request() 命令详解
  10. keepalived(8)——http、tcp检测