本节从整体来看一下Java中的精髓.
略
JDK(Java Development Kit) Java开发工具包,它包括:编译器,Java运行环境(JRE, Java Runtime Environment), JVM(Java虚拟机),监控和诊断工具等,而Java则表示一种开发语言.
Java程序执行流程图如下:
Java虚拟机判定热点代码的方式有两种:
主要是虚拟机会周期性的检查各个线程的栈顶,若某个或某些方法经常出现在栈顶,那这个方法就是"热点方法".这种判定方式的优点是实现简单;缺点是很难精确一个方法的热度,容易受到线程阻塞或外界因素的影响.
主要就是虚拟机给每一个方法甚至代码块建立了一个计数器,统计方法的执行次数,超过了一定的阈值则标记此方法为热点方法.
Hotspot虚拟机使用的基于计数器的热点探测方法.它使用了两类计数器:方法调用计数器和回边计数器,当达到一定阈值时就会触发JIT编译.
方法调用计数器: 在client模式下的阈值是1500次,Server 是10000次,可以通过虚拟机参数: -XX: CompileThreshold = N 对其进行设置.但是JVM还存在热度衰减, 时间段内调用方法的次数较少,计数器就减小.
回边计数器: 主要统计的是方法中循环体代码执行的次数.
由上面的知识点我们可以看出,要想做到对Java了如指掌,必须要好好学习Java虚拟机,那除了Java虚拟机外,还有哪些知识是我们Java工程师必须掌握的知识呢?
原文:https://www.cnblogs.com/Night-Watch/p/11644740.html