好程序员Java学习路线分享JVM类加载机制,JVM相关概念
成都创新互联为企业级客户提高一站式互联网+设计服务,主要包括成都网站建设、成都网站制作、重庆APP软件开发、重庆小程序开发公司、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。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
这是为什么呢?下面我们来分析下:
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。