重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
好程序员Java学习路线分享JVM类加载机制,JVM相关概念
十载专注成都网站制作,企业网站建设,个人网站制作服务,为大家分享网站制作知识、方案,网站设计流程、步骤,成功服务上千家企业。为您提供网站建设,网站制作,网页设计及定制高端网站建设服务,专注于企业网站建设,高端网页制作,对成都塔吊租赁等多个方面,拥有丰富的网站设计经验。
jvm
jvm(Java Virtual Machine)Java虚拟机,是用代码虚拟出来的计算机,模拟执行计算机的各项功能,它有自己的硬件架构,如:处理器、堆栈、寄存器等,还有自己的一套指令系统,在不同的操作系统上都可以安装JVM,从而实现Java程序在不同的操作系统上都能执行,JVM就是为实现Java的跨平台特性。
JVM加载类的过程
我们执行Java程序开发出来后,需要先编译再执行,JVM就负责加载类的过程。
类加载的过程分为:
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
这是为什么呢?下面我们来分析下: