gpt4 book ai didi

Java:为什么存在 MaxPermSize?

转载 作者:IT老高 更新时间:2023-10-28 21:12:54 25 4
gpt4 key购买 nike

为什么存在 MaxPermSize?

最佳答案

这里有一篇关于垃圾收集器中永久代的好文章:

Presenting the Permanent GenerationJon Masamitsu's Weblog

编辑:

我还没有看到任何可以说明他们为何做出设计决定来对永久代大小设置最大限制的情况。但我想这样做有几个原因。

  1. 它使实现变得更加容易,GC 显然不是微不足道的,因此以任何方式简化您的实现可能是一个好主意。

  2. YAGNI(你不会需要它)大多数应用程序加载固定数量的类,而且通常它不是特别大,所以它们可能已经针对常见情况进行了优化,只是选择了一个合理的默认值并让它可配置。

  3. 假设您的 perm gen 大小增长到无法预测的大,那么您可能在类加载器中出现错误(或需要重新考虑您的体系结构)。即使在运行时生成类(或执行其他此类技巧)的应用程序中,生成的类的数量通常也是固定的,因此您应该能够调整 maxperm 以满足您的需求。

  4. 我不是 java 类加载和垃圾收集的所有细节方面的专家,但它们都是 JVM 的复杂部分,所以我想他们会尽量让这两个组件保持正交,并允许要使 perm gen 动态增长,可能会以复杂的方式将这两个组件耦合在一起(尤其是因为这两个组件都有严格的线程考虑)

  5. 限制最大 perm 代可能有一些性能优势,允许它增长可能涉及额外的集合复制,或者这可能意味着您的 perm 代不再存在于连续的地址空间中,这可能影响其他算法管理集合的方式。

显然这些都是猜测。但即使所有这些都是错误的,我绝对不认为 sun 选择固定大小是“白痴”,可能有比我想象的更多的工程和实现考虑:)

关于Java:为什么存在 MaxPermSize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3356005/

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