Dalvik控制VM详解
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详解相关推荐
- oracle控制文件都一样么,Oracle控制文件详解
一.Oracle控制文件 为二进制文件,初始化大小由CREATEDATABASE指定,可以使用RMAN备份 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等 ...
- python的turtle怎么设置rgb颜色_Python : turtle色彩控制实例详解
? 1 turtle.pencolor(* args ) 返回或设置pencolor. 允许四种输入格式: ? 1 pencolor() 将当前的pencolor返回为颜色规范字符串或元组(参见示例) ...
- 远程访问及控制(详解)——SSH远程管理及TCP Wrappers 访问控制
远程访问及控制(详解)--SSH远程管理及TCP Wrappers 访问控制 一.SSH远程管理 1.定义 2.优点 3.客户端与服务端 4.SSH服务的开启.端口号和配置文件 二.配置 OpenSS ...
- ThinkPHP的RBAC(基于角色权限控制)详解
ThinkPHP的RBAC(基于角色权限控制)详解 一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到 ...
- M1卡区块控制位详解
M1卡区块控制位详解 Mifare 1S50/Mifare 1S70 每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取 控制.存取控制为4个字节,共32位,扇区中的每个块(包括 ...
- 单片机控制两个步进电机画圆_基于单片机的步进电机转速控制设计详解(附程序)...
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角.这 ...
- 《前端》权限链接--vue前端权限控制方案详解附demo_feiyu_may的博客-CSDN博客_vue 前端权限
前端权限控制 - 潘正 - 博客园 https://www.cnblogs.com/guchengnan/p/11800947.html vue前端权限控制方案详解附demo_feiyu_may的博 ...
- 增程式发动机仿真控制逻辑详解(一)
本文转载在我的微信公众号:古德曼汽车工业. 希望关注本专栏的朋友,也能一并关注微信公众号. 原文地址:增程式发动机仿真控制逻辑详解(一) 1.前言 本订阅号的一个特色就是,你们都猜不到[思想]下一次更 ...
- android系统息屏设置_Android亮屏和熄屏控制实例详解
本文实例讲述了Android亮屏和熄屏控制实现方法.分享给大家供大家参考,具体如下: 一.概述 我们的Android应用程序很多需要和亮屏和熄屏打交道,比如闹钟的时候,需要保持亮屏,之后又需要熄屏.那 ...
最新文章
- 13.2. Mount partition
- 变频器怎么设置_如何利用串口调试软件与变频器通信?
- 【题解】洛谷P1541 [NOIP2010TG] 乌龟棋(类似背包的DP)
- 新浪微博客户端(eoe)
- 文件授权以及查看系统的一些信息命令
- java 自旋方法_JAVA循环使用CAS实现自旋操作
- Dubbo基础知识总结
- 开发一个大型后台管理系统,真的需要用前后端分离的技术方案吗?
- python学爬虫、还没放出来_Python 爬虫学习没思路?可以看看这篇文章
- 【转载】一份不可多得的深度学习技巧指南
- 计算机原理内存详解,【讲给小白的计算机原理】什么是内存,内存的作用?
- TCP滑动窗口协议作用
- VS2005 安装WTL
- 凡人修仙传显示无法连接服务器,凡人修仙传进不去 无法连接服务器 登陆失败 闪退 黑屏...
- 网易博客日志:《数字滤波器》交流-6-LMS算法的训练及工作阶段
- 今日恐慌与贪婪指数为10 恐慌程度有所上升
- 锐捷路由器如何配置虚拟服务器,锐捷路由器配置命令完美宝典
- van-icon自定义图标的引入
- U盘安装CentOS7 解决各种问题
- c语言字母分别代表的意思,C语言中%c,%s分别代表什么意思? 在C语言中c% 和 d% 是表示什么意思?...
热门文章
- 进口配额管理和出口配额管理_SAP采购管理模块中的quot;配额协议quot;应用详解...
- Python处理pdf文件库 - PyPDF2详解
- C/C++浮点数在内存中的存储方式
- 【Qt】Qt登录对话框(纯代码实现)
- 【Linux】一步一步学Linux——mv命令(30)
- 改变窗口背景_办公软件操作技巧063:如何设置ppt母版背景
- 跑三小时的monkey测试该怎么算_百亿次的锤炼 - 带逛Dragonboat的各类测试
- 每天一道LeetCode-----重排链表,节点顺序是从头取一个,从尾取一个,从头取一个,从尾取一个.....
- postmethod 设置request body utf-8_Cypress系列(62) request() 命令详解
- keepalived(8)——http、tcp检测