Java JBoss 5 perm大小和堆大小

Java JBoss 5 perm大小和堆大小,java,jboss,jvm,heap,permgen,Java,Jboss,Jvm,Heap,Permgen,JBoss的堆和perm大小之间有关系吗?我想增加最大堆大小,但我不确定它对perm大小有什么影响。我正在运行JDK 6。目前我没有遇到perm gen问题,但如果我增加堆大小,是否存在需要增加perm gen空间的隐式关系?我想问的是,有什么经验法则吗 否,如果增加了整个堆大小,则不一定需要增加perm gen大小。perm gen空间保存JVM加载的类。如果部署的应用程序没有更改,则要存储在perm gen空间中的数据量也将保持不变—即使总体可用堆空间增加了 关系是相反的——如果你增加了烫发

JBoss的堆和perm大小之间有关系吗?我想增加最大堆大小,但我不确定它对perm大小有什么影响。我正在运行JDK 6。目前我没有遇到perm gen问题,但如果我增加堆大小,是否存在需要增加perm gen空间的隐式关系?我想问的是,有什么经验法则吗

否,如果增加了整个堆大小,则不一定需要增加perm gen大小。perm gen空间保存JVM加载的类。如果部署的应用程序没有更改,则要存储在perm gen空间中的数据量也将保持不变—即使总体可用堆空间增加了


关系是相反的——如果你增加了烫发的大小,你的应用程序将有更少的堆空间->在这种情况下,你可能会考虑增加整个堆的大小。

< P>为了理解堆和PimMGen,也许下面的解释是关于存储在PermGen中的。(或Java 8中的Metaspace)有助于理解permgen的用途以及与堆的区别:

如果您还记得,Java中的所有内容都表示为一个对象。此外,所有对象都是特定类的实例。甚至类声明本身最终也只是非常特定的对象。但让类声明有趣的是,在大多数JVM上,类声明都加载到一个特定的内存区域中,名为永久生成(PermGen,简称PermGen)。因此,概括一下:所有Java类都加载并存储在Javapermgen中

这包括以下内容:

  • 课程名称
  • 类的字段
  • 具有方法字节码的类的方法
  • 恒定池信息
  • 与类关联的对象数组和类型数组
  • 即时编译器优化
差不多就是这样。更多的比特和片段,但对实际内存消耗的影响不会超过百分之几。所有这些都分配给PermGen并留在PermGen中


正如您所见,PermGen的大小要求在很大程度上取决于加载的类的数量以及此类类声明的大小。因此,一般来说,您加载到JVM的应用程序中的类越多,您将需要的PermGen就越大。

如果您检查它们和声明之间的差异,会更好意识到你需要增加哪一个。