一、引用計數算法:
判斷對象的引用數量:
通過判斷對象的引用數量來決定對象是否可以被回收;
每個對象實例都有一個引用計數器,被引用則+1,完成引用則-1;
任何引用計數為0的對象實例可以被當作垃圾收集;
優缺點:
優點:執行效率高,程序執行受影響較小;
缺點:無法檢測出循環引用的情況,導致內存泄漏;
二、可達性分析算法:
通過判斷對象的引用鏈是否可達來決定對象是否可以被回收;
可以作為GC Root的對象有:
虛擬機棧中引用的對象(棧幀中的本地變量表);
方法區中的常量引用對象;
方法區中類靜態屬性引用對象;
本地方法棧中JNI(Native方法)的引用對象;
活躍線程中的引用對象;
