每日三道面試題,成就更好自我茫茫人海千千萬萬,感謝這一秒你看到這裏。但願個人面試題系列能對你的有所幫助!共勉!java
願你在將來的日子,保持熱愛,奔赴山海!面試
昨天既然你有講到字符串常量池是吧,那這樣吧安全
咱們能夠分爲線程私有和線程共享的兩種狀況jvm
線程私有:程序計數器,本地方法棧,虛擬機棧ide
線程共享:堆和方法區線程
程序計數器:它佔用了很小的一塊內存空間,記錄的是咱們當前線程的一個執行的行數。由於線程它可能不斷的切換,如何保證到當前線程時,它執行到哪裏呢,就是靠程序計數器來實現的。該內 存區域是惟一一個 Java 虛擬機規範沒有規定任何 OOM 狀況的區域。對象
虛擬機棧:當jvm執行方法時,會在此區域建立棧幀入棧,它存儲方法的各類信息好比局部變量表,操做數棧,動態鏈接,方法放回地址這些信息。blog
本地方法棧:它也虛擬機棧相似,可是它主要爲native方法服務,例如java須要使用c語言的接口服務時。繼承
堆: 也叫 Java 堆或者是 GC 堆,它是一個線程共享的內存區域,也是 JVM 中佔用內存最大的一塊區域,幾乎全部對象都儲存在這裏分配內存,也是垃圾回收期主要的管理區域。接口
方法區:存儲一些被虛擬機加載的類信息,常量,靜態變量,編譯器編譯後的代碼等數據。
不錯不錯,JVM都有了解,那再問你一點吧。
系統加載Class類型文件的主要步驟有加載-->鏈接--> 初始化,鏈接又能夠分爲驗證-->準備-->解析
能夠,那問你最後一道:
對於任意一個類,都須要由加載它的類加載器和這個類自己一同確立在 JVM 中的惟一性,每個類加載器,都有一個獨立的類名稱空間。而類加載器就是根據指定全限定名稱將 class 文件加載到 JVM 內存,而後再轉化爲 class 對象。
主要有一下四種類加載器:
而對於一個類加載的過程當中,若是一個類加載器收到類加載的請求的時候,它首先不會本身去加載這個類,而是把這個請求委派給本身的父類加載器去完成,一直到頂層的啓動類加載器時,只有當父加載沒法完成這一加載請求時,就會往下一層一層的嘗試去加載類。這種模式就是雙親委派模式,這中模式的好處能夠使類有了層次劃分,也保障安全。
小夥子不錯嘛!今天就到這裏,期待你明天的到來,但願能讓我繼續保持驚喜!
注: 若是文章有任何錯誤和建議,請各位大佬盡情留言!