gpt4 book ai didi

java - Java 中的垃圾回收是否发生在 Java 堆的 perm 区域?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:24:31 26 4
gpt4 key购买 nike

我正在阅读 this文章,它说

Perm generation of Heap 或 Perm Area of​​ Heap 有些特殊,它用于存储 JVM 中与类和方法相关的元数据,它还托管 JVM 提供的 String 池,如我的字符串教程中所讨论的 why String在 Java 中是不可变的。关于 Java 中的垃圾收集是否发生在 Java 堆的 perm 区域有很多意见,据我所知,这是依赖于 JVM 的事情,至少发生在 Sun 的 JVM 实现中。您也可以通过创建数百万个字符串并观察垃圾收集或 OutOfMemoryError 来尝试此操作

所以我有一个问题:

垃圾收集是否发生在堆的 Perm 区域。如果不是,那么静态变量或方法和字符串文字池如何进行垃圾收集?

最佳答案

Grabage 收集确实发生在 permgen 中(基于 Jvm 实现)。我写了一个关于如何故意填充 perm gen 的问题的答案。 JVM 在 permgen 区域加载类等元数据。如果由于某种原因 JVM 在 permgen 上运行不足,它可以决定卸载在任何地方都没有引用的类。但是 GC 何时运行或是否运行可能因 JVM 和 JVM 实现而异。

卸载类以创建空间是 jvm 在抛出“内存不足:permgen 空间”之前的最后努力

请看看这个问题SO Link这可能会有所帮助基本上这展示了如何通过防止 permgen 区域的 GC 来填充 permgen。

关于java - Java 中的垃圾回收是否发生在 Java 堆的 perm 区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23653785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com