每日一問第3期 | 面試官:談談JVM的內存結構?

點擊上方藍色鏈接,關注並“設爲星標

精彩內容,每天及時推送

第2期答案

上期問題每日一問第2期 | final, finally, finalize 的區別?

問題答案:

final修飾符(關鍵字)當一個類被修飾爲final時,它的含義很明確,就是不允許該類被繼承,也就是說,該類“絕後”了,任何繼承它的操作都會以編譯錯誤告終。因此一個類不能既被聲明爲abstract的,又被聲明爲final 的;將變量或方法聲明爲final,可以保證它們在使用中不被改變;被聲明爲final 的變量必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改;被聲明爲final 的方法也同樣只能使用,不能重載此外當一個方法被修飾爲final方法時,意味着編譯器可能將該方法用內聯(inline)方式載入,所謂內聯方式,是指編譯器不用像平常調用函數那樣的方式來調用方法,而是直接將方法內的代碼通過一定的修改後copy到原代碼中。這樣可以讓代碼執行的更快(因爲省略了調用函數的開銷),比如在int[] arr = new int[3]調用arr.length()等。另一方面,私有方法也被編譯器隱式修飾爲final,這也就意味着private final void f()和private void f()並無區別

finally在異常處理的時候提供finally 塊來執行任何清除操作,例如IO流的關閉;如果拋出一個異常,那麼相匹配的catch 子句就會執行,最後控制就會進入finally 塊(如果有的話)。

finalize方法名;Java 技術允許使用finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在Object 類中定義的,因此所有的類都繼承了它。子類覆蓋finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。

每日一問|今日問題

在Java中,JVM的內存結構是什麼樣的? 

問題答案將會在下期系列文章中給出,希望大家都能養成獨立思考的好習慣,先自己思考一下問題的答案。大家可以加我微信:hntkyxy,把自己的答案發給我,在下期文章中可能會附上你的答案。

長按二維碼識別關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章