點擊上方“Coder編程”,選擇“置頂公衆號”
技術文章第一時間送達!
每天進步一點,不做curd工程師
什麼是垃圾
簡單來說就是內存中已經不在被使用到的空間就是垃圾
要進行垃圾回收,如何判斷一個對象是否可以被回收?
引用計數法
枚舉根節點做可達性分析
爲了解決引用計數法的循環引用問題,Java 使用了可達性算法。
跟蹤收集器採用的爲集中式的管理方式,全局記錄對象之間的引用狀態,執行時從一些列GC Roots的對象做爲起點,從這些節點向下開始進行搜索所有的引用鏈,當一個對象到GC Roots 沒有任何引用鏈時,則證明此對象是不可用的。
圖中,對象Object6、Object7、Object8雖然互相引用,但他們的GC Roots是不可到達的,所以它們將會被判定爲是可回收的對象。
哪些對象可以作爲 GC Roots 的對象:
虛擬機棧(棧幀中的局部變量區,也叫局部變量表)中引用的對象
方法區中的類靜態屬性引用的對象
方法去常量引用的對象
本地方法棧中 JNI (Native方法)引用的對象
推薦
文末
歡迎關注個人微信公衆號:Coder編程
歡迎關注Coder編程公衆號,主要分享數據結構與算法、Java相關知識體系、框架知識及原理、Spring全家桶、微服務項目實戰、DevOps實踐之路、每日一篇互聯網大廠面試或筆試題以及PMP項目管理知識等。更多精彩內容正在路上~
新建了一個qq羣:315211365,歡迎大家進羣交流一起學習。謝謝了!也可以介紹給身邊有需要的朋友。文章收錄至
Github: https://github.com/CoderMerlin/coder-programming
Gitee: https://gitee.com/573059382/coder-programming
歡迎關注並star~微信公衆號
我知道你 “在看”