Java對象的初始化與清理

1、構造器用來進行初始化、GC用於清理

2、方法的重載以及怎麼進行重載

3、this關鍵字

  1. 返回當前對象的引用
  2. 調用構造函數(最多一次,且位於當前構造函數的第一行)
  3. static中就沒有this的概念

4、finalize() 一旦GC準備好釋放對象佔用的存儲空間,首先調用該方法,並且在下一次GC動作發生時,才真正回收對象佔有的內存。用來清理非Java代碼創建的內存(C/C++),或者進行對象終結條件的驗證(所有人都應該被簽退)。重寫本方法時應當調用super()。

5、Java垃圾回收機制

  1. 內存分配以較大的塊爲單位,每塊對應的代數,表示被引用的次數
  2. Java監視系統,若對象穩定,垃圾回收期的效率降低,則切換爲“標記-清掃”(遍歷所有,標記活的,清理死的)
  3. 堆空間碎片過多,切換到“停止-複製”(遍歷所有,標記活的,複製到另一塊,改變引用)
  4. 遍歷方式
    1. 每個對象被引用就計數+1;容易出現兩個無用對象互相引用
    2. 便利堆棧和靜態存儲區域,對於所有引用追蹤其引用的對象
  5. JIT(Just-In-Time)即時編譯技術,將程序全部或部分翻譯成本地機器碼(原來是JVM的活),程序的運行速度提升,當需要裝載某個類時,編譯器會先找到其.class文件,然後將該類的字節碼裝入內存
    1. 全部:加載時間長,增加可執行代碼的長度,頁面調度導致降低程序速度
    2. 惰性評估,在必要的時候進行代碼編譯。Java HostSpot使用。執行次數越多,運行速度越快。

6、初始化順序

  1. 父類早於子類
  2. 自動初始化(成員變量、數組)早於手動初始化
  3. 對於自動初始化,先靜態對象

7、靜態代碼塊static {}、常規代碼塊 {} 用於初始化

 

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