您現在的位置是:首頁 > 單機遊戲首頁單機遊戲

JVM常見面試題(持續更新)

簡介如何進行物件的訪問定位一是透過控制代碼來訪問,即從堆中劃分出一塊記憶體作為控制代碼池,而棧上的reference中儲存的就是物件的控制代碼地址,而控制代碼中又包含了例項資料和型別資料各自的地址資訊

如何修改文件的行數

JVM作為JAVA程式設計師進階的必經之路,也自然成了各路面試中考察程式設計師對技術理解深度的不二選擇,因此,JVM的面試題是海量的。本章節主要抽取一些重點和容易被忽視的面試題進行介紹, 希望能為讀者朋友帶來一定的幫助。

JVM常見面試題(持續更新)

深複製和淺複製

深複製:即新建一個物件,將就物件所包含的欄位和值完全抄襲一份,大家各自維護,毫無關聯。

淺複製:即共享一個物件,僅透過指標去引用同一個物件,任何對引用物件的操作都將影響相關引用物件。

在JAVA實踐中,通常地,基本型別是透過深複製來進行賦值的,而引用物件型別是透過淺複製來賦值的。

記憶體溢位和記憶體洩漏

這是個容易讓人摸不清楚的兩個詞彙。

記憶體溢位:指超出記憶體容量,導致程式異常。

記憶體洩漏:指某些資源一直未被使用,卻長期不能釋放,就好像這部分記憶體洩漏了不受控一樣。這種情況多出現於長週期物件持有短週期物件,但並未真正使用短週期物件,造成了空間浪費。這也提醒程式設計師在物件引用時,要注意保持克制,不要超標。

如何進行物件的訪問定位

一是透過控制代碼來訪問,即從堆中劃分出一塊記憶體作為控制代碼池,而棧上的reference中儲存的就是物件的控制代碼地址,而控制代碼中又包含了例項資料和型別資料各自的地址資訊。

二是透過在例項資料中存放一個到物件型別資料的指標,該指標指向物件的型別資料,而棧上的reference中儲存的是該例項資料的地址。

JVM常見面試題(持續更新)

(控制代碼訪問示意圖)

JVM常見面試題(持續更新)

(指標訪問示意圖)

兩種方式各有千秋,控制代碼方式可以保持棧上reference的穩定,因為即便例項資料的地址發生調整,也僅需調整控制代碼池中指標即可。而直接指向例項資料的方式則減少了一個路由環節,提升了效率。

Top