說到面試和筆試,現在許多公司也明白筆試意義不大,因為很多人會背題,是以大部分情況下都是以面談為主。面談中,這兩年會出現問題:Java的記憶體劃分。
記憶體模型:
1.看你是否是知道Java的記憶體劃分;
2.看你是否有過具體的工作經驗,因為在實際的開發之中,如果不調整記憶體,那麼性能将會造成極大的浪費;
3.關于GC的解釋操作。
說到記憶體,可能最直覺的了解就在于Runtime類中,這個類采用了單例設計模式,這個類之中提供了記憶體資訊的取得,以及系統垃圾的收集處理操作。
範例:取得預設的記憶體大小:

這三個方法的傳回值類型都是long,是以傳回的資料機關都是位元組。
實際在Java裡面如果想要進行記憶體的變更,就需要掌握一下記憶體的結構(記憶體模型)。
在Java裡面對于記憶體的空間可以劃分為如下幾點:
1.伊甸園區:新生的對象都儲存在此處,但這些新生的對象不一定會一直存活;
此處也屬于記憶體空間,既然是記憶體空間一定會被占滿,如果占滿了,就會執行GC操作;
2.舊生代區:如果某些對象其要一直使用,那麼就将進入到舊生代區,這屬于二級回收保險;
如果要先執行GC,那麼肯定先清理伊甸園區,随後如果發現空間不足,繼續清理舊生代區;
3.永久區:永久區中的資料不會清除,即使程式出現了“OutOfMemoryError”也不會清除。
範例:直覺的觀察記憶體
調整記憶體大小:-Xms2048M-Xmx2048M-Xmn1024M
(1)“-Xms”:初始配置設定的記憶體大小,預設在實體記憶體的64分之1,但是小于1G;
(2)“-Xmx”:最大配置設定記憶體,預設大小為實體記憶體的4分之1,但是小于1G;
(3)“-Xmn”:設定年輕代(伊甸園區)的堆記憶體大小;
隻有調整之後才可以保證系統記憶體會得到提升,這樣很明顯,你就可以發揮出你電腦的性能,因為預設的大小。
更多專業知識,面試技巧就在面試一點通,持續更新中……
感謝浏覽~
本内容來源于
阿裡雲大學-Java面試技巧