JVM执行模式设置
解释模式
解释执行:通过解释器将源语言代码逐条解释成机器语言,然后提交给计算机执行,解释一条执行一条,不形成目标程序,不依赖于平台 缺点:解析需要时间,不生成目标程序,而是一句一句的执行的方式会造成计算机资源的浪费,即执行效率低。
编译模式
编译执行:由编译器将目标代码一次性全部编译成目标程序,再由机器运行目标程序。相比解释执行编译执行效率高,占用资源小,适合复杂程序。
混合模式
JVM默认的执行方式为混合模式 ,混合使用解释器和热点代码编译(JIT JUST IN TIME COMPILER),对于多次被调用的方法(方法计数器:检测方法执行频率)或者多次被调用的循环(循环计数器:检测循环执行频率)进行编译执行。 检测热点代码 XX:CompileThreshold = 1000…
调优参数
-Xmixed 默认混合模式 -Xint 使用解释模式 ,启动很快,执行略慢 -Xcomp 使用纯编译模式,执行很快,启动很慢 在idea当中里参数加一下就行
JSR 规范 Java Memory Model (JSR 133)
JSR133中文版:http://ifeve.com/wp-content/uploads/2014/03/JSR133%E4%B8%AD%E6%96%87%E7%89%881.pdf
JSR133: http://www.cs.umd.edu/~pugh/java/memoryModel/jsr133.pdf
JMM(Java Memory Model (java内存模型 ≠ java虚拟内存模型))
JMM 是一种符合内存规范的,屏蔽了各种硬件和操作系统访问差异的,保证了Java在各种平台下对内存的访问都能保证效果一致的机制及规范。 提到Java内存模型,一般指的是JDK 5 开始使用的新的内存模型,主要由JSR-133: JavaTM Memory Model and Thread Specification 描述。
JMM 规定了所有的变量都储存在主内存中,每条线程都有自己的工作内存,线程的工作内存保证了该线程中用到是变量的内存拷贝。线程对变量的所有操作必须在工作内存中进行,不能直接读写主存。
1.不同线程工作内存无法相互访问。线程之间的通信则需要在工作内存和主存中同步进行。
2.JMM用于工作内存和主存之间数据同步的过程。