class 对象会被 gc 吗?

2020-07-20 19:41:53 +08:00
 xssSt

面试被问到,我们都知道 Class 对象是在堆上的,静态变量是位于 class 对象内的,那既然在堆上我感觉就会被 GC 掉,请问是这样吗?

1357 次点击
所在节点    问与答
3 条回复
Hurriance
2020-07-20 19:48:30 +08:00
静态变量是类变量,存在元空间里的,元空间满了也会 gc 的
CoooooolFrog
2020-07-20 19:57:25 +08:00
去搜 metaspace gc,当元空间内存占用达到配置的阈值时就会触发元空间 gc 。
这是有明确的规则的:
1 、该类所有的实例都已经被回收;
2 、加载该类的 ClassLoader 已经被回收;
3 、该类对应的 java.lang.Class 对象没有任何地方被引用。
满足以上条件的 class 对象会被 gc
Vibra
2020-07-20 20:01:09 +08:00
必然是会的,不然 oop 都是无限内存吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/691693

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX