84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
在看MAT得时候,看到关于GCRoot的定义中有一条:
系统类或者说是由系统类加载器加载的类。
HashMap位于java.util包下,由BootstrapClassLoader加载,那么它是不是GCRoot呢?
如果是的话,我还有一个疑问,想请教:如果HashMap是GCRoot,那么它内部存储的对象肯定包含在GCRoot引用链的了,那么每次在垃圾回收器回收的时候HashMap中的对象都无法被回收掉,那这样岂不是造成内存泄露了?
GC Roots包括:
虛擬機器棧中的變數。
方法區的常數。
方法區中的靜態變數。
同時,需要明確Java記憶體大致分為:虛擬機棧,Native方法棧,Java堆,本地程式計數器和方法區。一個HashMap引用可以當GC Root,但HashMap的實體就不是GC Root了。
GC Roots包括:
虛擬機器棧中的變數。
方法區的常數。
方法區中的靜態變數。
同時,需要明確Java記憶體大致分為:虛擬機棧,Native方法棧,Java堆,本地程式計數器和方法區。一個HashMap引用可以當GC Root,但HashMap的實體就不是GC Root了。