天天看點

Java面試 | 必會知識點:Java記憶體模型

說到面試和筆試,現在許多公司也明白筆試意義不大,因為很多人會背題,是以大部分情況下都是以面談為主。面談中,這兩年會出現問題:Java的記憶體劃分。

記憶體模型:

1.看你是否是知道Java的記憶體劃分;

2.看你是否有過具體的工作經驗,因為在實際的開發之中,如果不調整記憶體,那麼性能将會造成極大的浪費;

3.關于GC的解釋操作。

說到記憶體,可能最直覺的了解就在于Runtime類中,這個類采用了單例設計模式,這個類之中提供了記憶體資訊的取得,以及系統垃圾的收集處理操作。

範例:取得預設的記憶體大小:

Java面試 | 必會知識點:Java記憶體模型
Java面試 | 必會知識點:Java記憶體模型

這三個方法的傳回值類型都是long,是以傳回的資料機關都是位元組。

實際在Java裡面如果想要進行記憶體的變更,就需要掌握一下記憶體的結構(記憶體模型)。

在Java裡面對于記憶體的空間可以劃分為如下幾點:

1.伊甸園區:新生的對象都儲存在此處,但這些新生的對象不一定會一直存活;

此處也屬于記憶體空間,既然是記憶體空間一定會被占滿,如果占滿了,就會執行GC操作;

2.舊生代區:如果某些對象其要一直使用,那麼就将進入到舊生代區,這屬于二級回收保險;

如果要先執行GC,那麼肯定先清理伊甸園區,随後如果發現空間不足,繼續清理舊生代區;

3.永久區:永久區中的資料不會清除,即使程式出現了“OutOfMemoryError”也不會清除。

範例:直覺的觀察記憶體

Java面試 | 必會知識點:Java記憶體模型
Java面試 | 必會知識點:Java記憶體模型
Java面試 | 必會知識點:Java記憶體模型

調整記憶體大小:-Xms2048M-Xmx2048M-Xmn1024M

(1)“-Xms”:初始配置設定的記憶體大小,預設在實體記憶體的64分之1,但是小于1G;

(2)“-Xmx”:最大配置設定記憶體,預設大小為實體記憶體的4分之1,但是小于1G;

(3)“-Xmn”:設定年輕代(伊甸園區)的堆記憶體大小;

隻有調整之後才可以保證系統記憶體會得到提升,這樣很明顯,你就可以發揮出你電腦的性能,因為預設的大小。

更多專業知識,面試技巧就在面試一點通,持續更新中……

感謝浏覽~

本内容來源于

阿裡雲大學-Java面試技巧