设为首页 加入收藏

TOP

Dalvik——如何控制vm(二)
2014-11-24 12:00:16 来源: 作者: 【 】 浏览:2
Tags:Dalvik 如何 控制
不正常的时候可以使用。


六、死锁预测


如果虚拟机以WITH_DEADLOCK_PREDICTION参数编译,那么死锁预测器会在-Xdeadlockpredict参数中使能。(dalvikvm –help会告诉你虚拟机是否编译正确——在Configured中按行查找deadlock_prediction)这个特性会让虚拟机一直跟踪对象的锁获取的顺序,如果程序试图以与之前看到不同的顺序获取一些锁,虚拟机会log一个warning并有选择的抛出异常。


命令行参数是基于dalvik.vm.deadlock-predict特性设置的,正确的值是off表示不使能它(默认),warn表示log问题但是继续执行,err表示从monitor-enter指令中引发一个dalvik.system.PotentialDeadlockError异常,abort表示终止整个虚拟机。


你通常可以这么使用:


adbshell setprop dalvik.vm.deadlock-predict err


除非你可以在log信息滚动的时候一直关注着。


注意这个特性是死锁预测,不是死锁检测——在当前实现中,在锁被获取之后才会进行计算(这减轻了代码,降低了互斥信息外的冗余)。在挂起的进程中执行kill -3时可以发现一个死锁,并且可以在log信息中检测到。


这仅仅考虑了监督程序,本地的互斥量和其他资源也会引起死锁,而且不会被它检测到。


七、dump堆栈追踪


和其他桌面虚拟机一样,dalvik虚拟机收到SIGQUIT(Ctrl-\ 或者kill -3)时,会为所有的现成dump所有的堆栈追踪。它默认写入Android 的log,但是也可以写入一个文件。


dalvik.vm.stack-trace-file特性允许你指定要将线程堆栈追踪写入的文件名,如果不存在,将创建,新的信息将追加到文件尾,文件名通过-Xstacktracefile参数写入虚拟机。例如:


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


如果这个特性没有被定义,虚拟机会在收到这个信号时将堆栈追踪信息写入android log。


八、dex文件和校验


出于性能考虑,优化过的dex文件的和校验被取消了,这通常叫安全,因为文件是在设备上产生的,并且有禁止修改的权限。


但是如果设备的存储器不可靠,就会发生数据损坏,这通常表现为重复的虚拟机崩溃。为了快速诊断这种失败,虚拟机提供了-Xcheckdexsum参数,如果设置了,在内容被使用之前所有的dex文件都会进行和校验。


如果dalvik.vm.check-dex-sum特性被使能,那么应用框架会在虚拟机创建时提供这个参数。


为了使能额外的dex和校验,可以:


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


不正确的和校验会组织dex数据的使用,产生错误并写入log文件,如果设备曾经有过这样的问题,那么将这个特性写入/data/local.prop很有用。


注意dexdump工具每次都会进行dex和校验,它也可以用于检测大量的文件。


九、产生标志位


在“Honeycomb”版本中引入了一系列的汇编,它们通过标志位写入虚拟机:


adb shell setprop dalvik.vm.extra-opts “flag1flag2 … flagN”


这些标志位之间用空格隔开。你可以指定任意多的标志位只要它们在系统特性值的长度范围内(目前是92个字符)。


这些额外的标志位会被加到命令行的底端,意味着它们会覆盖之前的设定。这些可以用于例如测试不同的-Xmx的值即使android框架层已经设定过了。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Dalvik——基本Dalvik VM调用 下一篇基于TI Davinci架构的双核嵌入式..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)