java - HashMap算不算GCRoot?
巴扎黑
巴扎黑 2017-04-18 10:19:45
[Java讨论组]

在看MAT得时候,看到关于GCRoot的定义中有一条:

  • 系统类或者说是由系统类加载器加载的类。

HashMap位于java.util包下,由BootstrapClassLoader加载,那么它是不是GCRoot呢?

如果是的话,我还有一个疑问,想请教:如果HashMap是GCRoot,那么它内部存储的对象肯定包含在GCRoot引用链的了,那么每次在垃圾回收器回收的时候HashMap中的对象都无法被回收掉,那这样岂不是造成内存泄露了?

巴扎黑
巴扎黑

全部回复(1)
PHPz

GC Roots包括:

  1. 虚拟机栈中的变量。

  2. 方法区中的常量。

  3. 方法区中的静态变量。

同时,需要明确Java内存大致分为:虚拟机栈,Native方法栈,Java堆,本地程序计数器和方法区。一个HashMap引用可以作为GC Root,但是HashMap的实体就不是GC Root了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号