好程序员Java学习路线分享JVM类加载机制,JVM相关概念
jvm<br>
jvm(Java Virtual Machine)Java虚拟机,是用代码虚拟出来的计算机,模拟执行计算机的各项功能,它有自己的硬件架构,如:处理器、堆栈、寄存器等,还有自己的一套指令系统,在不同的操作系统上都可以安装JVM,从而实现Java程序在不同的操作系统上都能执行,JVM就是为实现Java的跨平台特性。
JVM加载类的过程
我们执行Java程序开发出来后,需要先编译再执行,JVM就负责加载类的过程。<br>
类加载的过程分为:
public static int count = 100;
如:上面的count变量在准备阶段会赋值为0,在初始化时再赋值为100;
虚拟机启动时,定义了main()方法的那个类先初始化
代码案例
了解了类的加载机制,我们来看一道面试题:
public class MySingleton {
private static MySingleton singleton = new MySingleton();
public static int count1 = 0;
public static int count2;
private MySingleton(){
count1++;
count2++;
}
public static MySingleton getInstance(){
return singleton;
}
public static void main(String[] args) {
MySingleton singleton = MySingleton.getInstance();
System.out.println("count1-->"+MySingleton.count1);
System.out.println("count2-->"+MySingleton.count2);
}
}
上面的结果,大多数同学可能认为两个静态变量都是1,结果比较意外:
count1-->0
count2-->1
这是为什么呢?下面我们来分析下:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。