十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
好程序員Java學(xué)習(xí)路線分享JVM類加載機(jī)制,JVM相關(guān)概念

十載專注成都網(wǎng)站制作,企業(yè)網(wǎng)站建設(shè),個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁制作,對成都塔吊租賃等多個(gè)方面,擁有豐富的網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn)。
jvm
jvm(Java Virtual Machine)Java虛擬機(jī),是用代碼虛擬出來的計(jì)算機(jī),模擬執(zhí)行計(jì)算機(jī)的各項(xiàng)功能,它有自己的硬件架構(gòu),如:處理器、堆棧、寄存器等,還有自己的一套指令系統(tǒng),在不同的操作系統(tǒng)上都可以安裝JVM,從而實(shí)現(xiàn)Java程序在不同的操作系統(tǒng)上都能執(zhí)行,JVM就是為實(shí)現(xiàn)Java的跨平臺(tái)特性。
JVM加載類的過程
我們執(zhí)行Java程序開發(fā)出來后,需要先編譯再執(zhí)行,JVM就負(fù)責(zé)加載類的過程。
類加載的過程分為:
public static int count = 100;如:上面的count變量在準(zhǔn)備階段會(huì)賦值為0,在初始化時(shí)再賦值為100;
虛擬機(jī)啟動(dòng)時(shí),定義了main()方法的那個(gè)類先初始化
代碼案例
了解了類的加載機(jī)制,我們來看一道面試題:
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);
}
}
上面的結(jié)果,大多數(shù)同學(xué)可能認(rèn)為兩個(gè)靜態(tài)變量都是1,結(jié)果比較意外:count1-->0
count2-->1
這是為什么呢?下面我們來分析下: