java 方法区怎么进行回收

发布于 2022-09-13 01:22:41 字数 362 浏览 18 评论 0

java中有full gc 和 minor gc。
full gc是回收所有,minor gc是回收新生代。

java提供了多种垃圾收集器,不同版本的jdk默认的垃圾收集器也不同。
jdk8默认是parallel scavange gc用于新生代的回收,对应的parallel old gc用于老年代的回收。

我的问题是:

  1. 这两个垃圾回收器都有明确的回收范围,那方法区是怎么回收的呢?
  2. 如果说要触发一次full gc,那在jdk8下进行的操作是parallel scavange gc回收一次 + parallel old gc回收一次吗?
  3. 其他的垃圾回收器有哪些可以回收方法区呢?

求大佬指点!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眸中客 2022-09-20 01:22:41

规范里没说,所以要看 JVM 怎么实现;即便是同一个 JVM,不同 JDK 版本下表现也不太一样。

以 HotSpot 为例,JDK1.6 的方法区在永久代里,FullGC;JDK1.8 在 Metaspace 里,还是 FullGC。

https://www.zhihu.com/questio...

我三岁 2022-09-20 01:22:41

我看《深入理解Java虚拟机》里面介绍“回收方法区”时说Java虚拟机规范中可以不要求虚拟机在方法区实现垃圾收集。方法区垃圾收集主要回收两部分内容:废弃常量无用的类
方法区是否对类进行回收,HotSpot虚拟机提供了-Xnoclassgc参数进行控制,但是书中没有说明使用了那个垃圾收集器。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文