彼尔姆根空间的意义
2022-09-01 12:44:40
PermGen空间在java中的意义是什么?
PermGen 空间是为长期对象保留的 - 主要是 由 加载的对象。除非在非常特殊的情况下(特别是当加载这些类超出范围时),否则PermGen不会被垃圾回收。Class
ClassLoader
ClassLoader
这是一个垃圾回收优化 - 如果我们不希望被垃圾回收的对象单独存储,它会压缩存储其余对象的空间,从而减少垃圾回收器的工作量。
PermGen 特定于具有分代垃圾回收的 VM。
如果你使用JRockit,“PermGen的意义”是不存在的,因为JRockit没有这个概念。
几年前,当奇怪的“Out of PermGen空间”错误开始出现并且没有人知道它是谁的错误(Tomcat + Hibernate + Sun VM用于触发此)来替换其中一个组件(现在问题已经被理解,但是几年前当他们开始裁剪时,几乎不可能找到有关此的任何信息)。你可以用 Resin 替换 Tomcat,或者用 JRockIt 替换 Sun VM 等。
我认为重要的是要指出,PermGen不是Java规范的一部分,只是(相当)一些虚拟机的实现细节。