程序員的公眾號:源1024,獲取更多資料,無加密無套路!
最近整理了一波電子書籍資料,包含《Effective Java中文版 第2版》《深入JAVA虛擬機》,《重構改善既有代碼設計》,《MySQL高性能-第3版》,《Java并發編程實戰》等等
獲取方式: 關注公眾號并回復 電子書 領取,更多內容持續奉上
三色標記法:垃圾收集器依據可達性分析算法判斷對象是否存活時,將遍歷GC Roots過程中遇到的對象,按照“是否訪問過”這個條件,把對象標記成白色(white)、灰色(gray)、黑色(black)三種顏色。
優點:
可以異步執行,從而可以以中斷時間極少的代價或者完全沒有中斷來進行整個 GC
缺點:
?可能存在標記漏標和標記誤標的情況,需要額外的處理來解決這些問題。
?漏標處理方案有:
????????CMS:采用的是寫屏障 + 增量更新
????????G1: 采用的是寫屏障 + 原汁快照(SATB)
????????ZGC:采用的是讀屏障
白色表示對象尚未被掃描,即未被標記為存活對象。
灰色表示對象已經被掃描,但其引用的其他對象尚未被掃描。
黑色表示對象已經被掃描,并且其引用的其他對象也已經被掃描。
?標記過程:
- 垃圾收集器在開始垃圾回收時,將所有對象標記為白色。
- 然后從根對象開始,遞歸地遍歷對象圖,將遇到的對象標記為灰色,并將其引用的對象添加到待掃描隊列中。
- 接著,垃圾收集器從待掃描隊列中取出對象,將其標記為黑色,并將其引用的對象添加到待掃描隊列中。這個過程會一直進行,直到待掃描隊列為空。
- 最后,所有未被標記為黑色的對象即為垃圾對象,可以被回收。
?系列文章索引
MyBatis的插件能在哪些地方進行攔截?
了解MyBatis的緩存機制嗎
面試官:談談對volatile的理解
Spring中用到了哪些設計模式
面試官:說一下SQL的執行過程
線程池的工作原理
?