JVM-其它
2017-01-18 20:38
218 查看
Android的JVM是Dalvik VM,不遵循Java虚拟机规范,是基于寄存器的架构,它的Java字节码被转化成基于寄存器的指令集,在Anroid 2.2版本引入JIT。
JIT:
方法被频繁调用,或方法中有效循环次数很多,将会分别触发标准编译和OSR(栈上替换)编译动作。
一般来说,JIT编译器优化代码的时候会将这个线程没有修改到的非volatile类型的字段进行内联。一旦这个代码被编译了(你可以通过-XX:+PrintCompilation看到),你在另一个线程对这个字段进行的修改它很可能就永远也看不到了。加上随机的同步块或者打印语句可以推迟这个优化的执行,或者扰乱JIT编译器,让它不去执行这个优化。
JIT:
方法被频繁调用,或方法中有效循环次数很多,将会分别触发标准编译和OSR(栈上替换)编译动作。
一般来说,JIT编译器优化代码的时候会将这个线程没有修改到的非volatile类型的字段进行内联。一旦这个代码被编译了(你可以通过-XX:+PrintCompilation看到),你在另一个线程对这个字段进行的修改它很可能就永远也看不到了。加上随机的同步块或者打印语句可以推迟这个优化的执行,或者扰乱JIT编译器,让它不去执行这个优化。
相关文章推荐
- 获取JVM默认编码以及获取其它JVM属性的方法
- [疯狂Java]I/O:标准流重定向、JVM读写其它进程数据
- JSP中的日期问题及其它
- JVM运行情况分析-如何输出堆Thread、Heap Dump及分析
- Tomcat的JVM设置和连接数设置
- jvm gc 原理测试
- 解决ubuntu上eclipse无法打开,提示jvm版本太旧,至少要jdk1.8以上
- JVM参数配置大全
- JVM高级特性与实践(十四):线程安全 与 锁优化
- JVM(JAVA虚拟机介绍)
- Java虚拟机(JVM)参数配置说明
- JVM加载class文件的原理机制
- 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- JVM启动参数
- 从JVM角度看Java多态
- JVM常见的内存溢出
- JVM是用VC写的呀!
- 获得MFC窗口其它类指针的方法
- Address already in use: JVM_Bind<null>:8080
- FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(