学习JVM的一点简单笔记,宋红康老师jvm讲的很好,感谢。
尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)
Java和c++的区别:
Java是自动对内存动态分配的,自动进行垃圾回收。
应用程序——框架——API——JVM
目前默认的JVM虚拟机。三大Java虚拟机 : HotSpot, JRockit, IBM J9 JVM
使用热点代码技术JIT,提升效率
程序.java(用户)——>字节码文件.class(jvm字节码)——>不同平台的JVM)——>操作系统)——>硬件
程序虚拟机:JVM等
系统虚拟机:VMware等
栈式架构:
优:可移植性强,跨平台,指令集小。编译器易实现。
缺:性能下降,指令多。
虚拟机生命周期:
Runtime类是单例实现的
JVM
Class Loader
ClassLoader负责class文件的加载;
是否可以运行有Execution Engine决定。
加载阶段loading
链接阶段linking
链接:检查、准备(初始化变量)、解析(字段方法和引用转换)
初始化阶段lnitialization
类在加载的初始化阶段会调用clinit方法执行,对于static代码的执行,是按照定义顺序的。
public class Test {
private static int i = 10;
static {
i = 20;
j = 5 ;
}
private static int j = 9 ;
public static void main(String[] args) {
System.out.println(Test.i); //20 linking: prepare: i=10 initial: i=20
System.out.println(Test.j); //9 linking: prepare: i=5 initial: i=9
}
}
字节码
jclasslib
查看字节码的插件。