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

java中的PermGen空间
EN

Stack Overflow用户
提问于 2010-01-19 09:17:02
回答 4查看 5K关注 0票数 3

什么是PermGen in Java?我们的团队对于PermGen空间的增长存在问题。这种增长最终会影响性能。

我想知道PermGen空间是什么,以及我们如何优化它的空间使用?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-19 09:25:20

来自http://java.sun.com/docs/hotspot/gc1.4.2/faq.html (问题7-10)

  1. 永久一代的规模应该是多少? 永久生成用于保存反映VM本身的内容,例如类对象和方法对象。这些反射对象直接分配到永久生成中,并且独立于其他世代的大小。通常,可以忽略此代的大小大小,因为默认大小是足够的。但是,加载许多类的程序可能需要更大的永久代。
  2. 我怎样才能知道永久的一代是否已被填满? 从1.4.2开始,-XX:+PrintGCDetails将打印在每个垃圾收集时收集的堆的所有部分的信息。以获得完整的收藏 [全GC租赁: 30437K->33739K(280576K),0.7050569秒106231K->33739K(362112 K),Perm :2919K->2919K(16384 K),0.7052334秒] 这个例子表明,在永久世代中收集的很少(从收集之前使用的2919 K增加到收集后使用的2919 K),目前永久世代的大小是16384 K。
  3. 我怎样才能增加永久世代的规模? 使用命令行选项-XX:MaxPermSize=
  4. 我如何知道哪些类正在加载或卸载? 使用命令行选项-XX:+TraceClassloading和-XX:+TraceClassUnloading
票数 10
EN

Stack Overflow用户

发布于 2010-01-19 09:24:32

在JVM中,PermGen保存已加载/创建的类。与堆的其他部分一样,这些信息是垃圾收集的,但是有一些粗糙的边缘可以防止这种情况发生。只需增加PermGen空间

代码语言:javascript
复制
Start your JVM with
-XX:MaxPermSize=Xm
where X is a number like 128, 256.

关于这个错误的一个好的链接

票数 2
EN

Stack Overflow用户

发布于 2010-01-19 10:01:54

基本上,Perm生成是指堆上存储所有加载类的空间。它专门用于存储类定义。

除了Java类的基本字段之外,还有

代码语言:javascript
复制
* Methods of a class (including the bytecodes)
* Names of the classes (in the form of an object that points to a string also in the permanent generation)
* Constant pool information (data read from the class file, see chapter 4 of the JVM specification for all the details).
* Object arrays and type arrays associated with a class (e.g., an object array containing references to methods).
* Internal objects created by the JVM (java/lang/Object or java/lang/exception for instance)
* Information used for optimization by the compilers (JITs) 

看见在这里。

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

https://stackoverflow.com/questions/2092347

复制
相关文章

相似问题

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