首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PermGen空间的意义

PermGen空间的意义
EN

Stack Overflow用户
提问于 2010-02-11 00:34:53
回答 4查看 11.7K关注 0票数 29

PermGen空间在java中的意义是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-11 00:36:50

PermGen空间是为长期对象保留的-主要是由ClassLoader加载的Class对象。除非在非常特殊的情况下(特别是当加载这些类的ClassLoader超出作用域时),否则不会对PermGen进行垃圾回收。

这是一种垃圾收集优化-如果我们不希望被垃圾收集的对象被单独存储,它会压缩存储其余对象的空间,从而减少垃圾收集器的工作。

票数 44
EN

Stack Overflow用户

发布于 2010-02-11 01:33:54

PermGen特定于具有分代垃圾回收的虚拟机。

比方说,如果你使用JRockit,“PermGen的重要性”是不存在的,因为JRockit没有这个概念。

几年前,当奇怪的"out of PermGen space“错误开始出现时,没有人知道是谁的错(Tomcat + Hibernate + Sun用来触发这个错误)来替换其中一个组件(现在这个问题已经被理解了,但是几年前当他们开始裁剪时,几乎不可能找到任何关于这个问题的信息),这是很常见的。您可以用Resin替换Tomcat,或者用JRockIt替换Sun,等等。

我认为有必要指出的是,PermGen不是Java规范的一部分,只是(相当)一些VM的实现细节。

票数 8
EN

Stack Overflow用户

发布于 2010-02-11 00:41:16

您真正需要知道的唯一一件事是,PermGen空间与通用堆是分开的,并且不受-Xmx VM参数的影响。如果您的应用程序加载了大量类定义(如应用服务器或集成开发环境),则可以使用-XX:MaxPermSize VM选项设置PermGen空间大小。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2238522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档