搜尋
首頁JavaJava面試題多年開發經驗總結的Java面試題目-(五)

多年開發經驗總結的Java面試題目-(五)

1、描述JVM載入class檔案的原理機制?

(更多面試題推薦:java常見面試題

#載入:尋找並匯入class檔案;

檢查:載入的class檔案資料的正確性;

準備:為類別的靜態變數分配儲存空間;

解析:將符號參考轉換成直接引用(這一步是可選的)

初始化:初始化靜態變數,靜態程式碼區塊,在程式呼叫類別的靜態成員的時候開始執行,所以靜態方法main()才會成為一般程式的入口方法。類別的構造器也會引發該動。

2、Java 中會存在記憶體洩漏嗎,請簡單描述。

記憶體洩漏就是指一個不再被程式使用的物件或變數一直在記憶體中佔據著,java中記憶體外洩的發生場景,通俗地說,就是程式設計師可能創建了一個對象,以後一直不再使用這個對象,這個對象卻一直被引用,即這個對象無用但是卻無法被垃圾回收器回收的,這就是java中的內存洩露。

(相關教程推薦:java入門教程

如果一個外部類別的實例對象的方法傳回了一個內部類別的實例對象,這個內部類別物件被長期引用了,即使那個外部類別實例物件不再被使用,但由於內部類別持久外部類別的實例對象,這個外部類別物件將不會被垃圾回收,這也會造成記憶體洩漏。

3、GC是什麼?為什麼要有GC?

GC是垃圾收集的意思,用於防止記憶體洩露,有效的利用記憶體。垃圾回收器通常是作為一個單獨的低優先級的線程運行,不可預測的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清除和回收,程序員不能實時的調用垃圾回收器對某個物件或所有物件進行垃圾回收。

4、JVM的記憶體模型(重要、GC演算法、新生代、老年代、永久代等需要詳細了解) 

新生代:新建的物件都是用新生代分配內存,Eden空間不足的時候,會把存活的物件轉移到Survivor中,新生代大小可以由-Xmn來控制,也可以用-XX:SurvivorRatio來控制Eden和Survivor的比例

舊生代:用於存放新生代中經過多次垃圾回收仍然存活的對象

持久:實現方法區,主要存放所有已加載的類信息,方法信息,常量池等等。

可透過-XX:PermSize和-XX:MaxPermSize來指定持久帶初始化值和最大值。 Permanent Space不等於方法區,只不過是Hotspot JVM用Permanent Space來實作方法區而已,有些虛擬機器沒有Permanent Space而用其他機制來實作方法區。

標記-整理(Mark-Compact)

此演算法結合了「標記-清除」和「複製」兩個演算法的優點。也是分兩階段,第一階段從根節點開始標記所有被引用對象,第二階段遍歷整個堆,把清除未標記對象並且把存活對象“壓縮”到堆的其中一塊,按順序排放。此演算法避免了「標記-清除」的碎片問題,同時也避免了「複製」演算法的空間問題。

(相關影片教學推薦:java課程

5、GC的工作原理 

GC透過每個對象有一個引用計數屬性,新增一個引用時計數加1,引用釋放時計數減1,計數為0時可以回收,GC是後台的守護進程,對於Java程式設計師來說,分配物件使用new關鍵字;

釋放物件時,只要將物件所有引用賦值為null,讓程式不能夠再存取到這個對象,我們稱該物件為"不可達的".GC將負責回收所有"不可達"物件的記憶體空間。

對於GC來說,當程式設計師建立物件時,GC就開始監控這個物件的位址、大小以及使用情況。通常,GC會採用有向圖的方式來記錄和管理堆(heap)中的所有物件。透過這種方式確定哪些物件是"可達的",哪些物件是"不可達的".當GC確定一些物件為"不可達"時,GC就有責任回收這些記憶體空間。

但是,為了確保GC能夠在不同平台實現的問題,Java規範對GC的許多行為都沒有進行嚴格的規定。例如,對於採用哪種類型的回收演算法、何時進行回收等重要問題都沒有明確的規定。因此,不同的JVM的實現者往往有不同的實作演算法。這也為Java程式設計師的開發帶來行多不確定性。

以上是多年開發經驗總結的Java面試題目-(五)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中