垃圾收集(Garbage Collection,GC),并不是隨著 Java 一起誕生的。GC 的歷史比 Java 來得更加久遠,早在 1960 年的時候,MIT 的 Lisp 是第一門真正使用內存動態分配和垃圾收集技術的語言。當 Lisp 還在胚胎時期時,人們就在思考 GC 需要完成的三件事情:
哪些內存需要回收?
什么時候回收?
如何回收?
在經過半個世紀的發展后,對于這三個問題的答案越來越清晰,總結成就是:當需要排查各種內存溢出、內存泄漏問題時,當垃圾收集成為系統達到更高并發量的瓶頸時,我們就需要對這些 “自動化” 的技術實施必要的監控和調節。
在 Java 程序編寫的過程中,我們可以知道代碼的邏輯是怎樣的,但是具體的分支只有在運行過程中才能知道。而這部分的內存分配和回收也是動態進行的,垃圾收集器主要關注的就是這部分內存。
那么實際中,一個需要解決的問題就是,如何判斷對象是否存活,對于不再存活的對象,進行垃圾回收。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.