一個優秀的Java程式設計師必須了解GC的工作原理、如何最佳化GC的效能、如何與GC進行有限的交互,有一些應用程式對效能要求較高,例如嵌入式系統、即時系統等,只有全面提升記憶體的管理效率,才能提高整個應用程式的效能。
本文將從GC的工作原理、GC的幾個關鍵問題進行探討,最後提出一些Java程式設計建議,如何從GC角度提升Java程式的效能。
GC是什麼? 為什麼要有GC呢? (建議學習:java課程)
GC是垃圾收集的意思(Garbage Collection),記憶體處理是程式設計人員容易出現問題的地方,忘記或錯誤的記憶體回收會導致程式或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測物件是否超過作用域從而達到自動回收記憶體的目的,Java語言沒有提供釋放已分配記憶體的顯示操作方法。
所以,Java的記憶體管理其實就是物件的管理,其中包含物件的分配和釋放。
對於Java程式設計師來說,分配對象使用new關鍵字;釋放對象時,只要將對象所有引用賦值為null,讓程式不能夠再存取到這個對象,我們稱該對象為"不可達到的".GC將負責回收所有"不可達"物件的記憶體空間。
對GC來說,當程式設計師建立物件時,GC就開始監控這個物件的位址、大小、使用情況。通常,GC會採用有向圖的方式來記錄和管理堆(heap)中的所有物件。
透過這種方式決定哪些物件是可達的,哪些物件是;不可達的。當GC確定一些物件為不可達時,GC就有責任回收這些記憶體空間。
但是,為了確保GC能夠在不同平台實現的問題,Java規範對GC的許多行為都沒有進行嚴格的規定。
例如,對於採用哪種類型的回收演算法、何時進行回收等重要問題都沒有明確的規定。
因此,不同的JVM的實現者往往有不同的實作演算法。這也為Java程式設計師的開發帶來行多不確定性。本文研究了幾個與GC工作相關的問題,努力減少這種不確定性對Java程式帶來的負面影響。
以上是java的gc是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!