Thinking in Java Study(04)

初始化與清除 

1. 以構造器確保初始化

java利用構造器進行初始化,編譯器會自動調用構造器方法,構造器是和類同名的方法。

java會給沒有構造器的類提供一個默認的構造器,構造器不帶參數名稱與類名相同。

構造器可以重載,可以帶參數。

2. 方法的重載

區分重載方法的方法,參數的數量和類型不同,參數的順序也可以區分但不推薦。

涉及基本類型的方法重載,需要注意向上轉型和向下轉型。

3. 清除(終結和垃圾回收)

對象不可能不被回收

垃圾回收不等於析構 finalize()方法不同於C++的析構方法

垃圾回收只與內存有關

finalize()在垃圾回收時被調用,可以把垃圾回收之前應該做的事寫到這個方法中,但finalize()不一定會被調用,垃圾回收只有在內存被耗盡時纔會進行。

4. 垃圾回收如何工作

停止-複製

先暫停程序的運行,然後將所有存活的對象從當前堆複製到另一個堆,沒有被複制的全部都是垃圾。當對象被複制到新堆時,它們是一個挨着一個的,新堆保持緊湊排列。引用被修正,會降低效率。

標記-清掃

依據的思路是從堆棧和靜態存儲區出發,遍歷所有引用,進而找到所有存活的對象。每當找到一個存活對象,就給對象設一個標記,這個過程不會回收任何對象。只有全部標記工作完成之後清除纔開始。沒有被標記的對象被釋放。所剩下的空間是不連續的。

“自適應、分代的、停止-複製、標記-清掃”,Just-In-Time,可以把程序全部或部分編譯成機器碼,惰性編譯,用時才編譯。

5. 初始化

初始化的順序,先靜態後非靜態,先屬性後構造器

6. 數組

數組初始化可以不固定數組長度,根據需要分配。

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