gc中不能被回收的對象,叫做gc root,官網上說的太細了;現在大體總結一下如下:
1.SystemClassLoader加載的類(包括了靜態變量)
就是appClassLoader(classpath指定的目錄中的類,都能被其加載)
2.虛擬機緩存類對象
常量池(Constant Pool)
符號表(symbol Table)
字符串表(String Table)
基本類型包裝類緩沖池
3.存活的thread對象
活動線程的控制對象,也不應該被回收
4.thread棧
線程棧中引用的對象,也不應該會回收
5.synchronided object
正在被當成鎖對象的,不能被回收
6.jni引用的java對象
包括本地全局變量、本地線程棧
7.虛擬機自己使用的用於管理的對象
虛擬機為了完成任務,創建的Java對象,這些不應該被gc管理