
我还没有发现任何东西可以表明他们为什么要做出设计来对永久发电量有最大限制的决定。但是我认为这样做是出于几个原因。
它使实现起来更加容易,GC绝对是不平凡的,因此以任何方式简化实现可能是一个好主意。
YAGNI(您可能会需要它)大多数应用程序都加载固定数量的类,并且通常不是特别大,因此它们可能已针对常见情况进行了优化,并选择了合理的默认值并使其可配置。
假设您的烫发代大小正在增长到无法预料的大,那么您可能在类加载器中出错(或者需要重新考虑您的体系结构)。即使在确实在运行时生成类(或执行其他此类技巧)的应用程序中,生成的类的数量也通常是固定的,因此您应该能够调整maxperm以满足您的需求。
我不是Java类加载和垃圾回收的所有细节方面的专家,但是它们都是JVM的复杂部分,因此我想他们将尝试使这两个组件尽可能保持正交,并允许perm gen增长动态地可能会以复杂的方式将这两个组件耦合在一起(特别是因为这两个组件都具有严格的线程考虑)
限制最大烫发产生的数量可能会带来一些性能上的好处,使其增长可能涉及到集合的额外复制,或者可能意味着烫发产生不再存在于连续的地址空间中,这可能会影响其他算法的方式管理收藏。
显然这些都是推测。但是,即使所有这些都不对,我绝对不认为选择固定大小的太阳是“愚蠢的”,但也许还有更多的工程和实现方面的考虑超出了我的梦想:)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)