java 1.8 MaxPermSize失效了
时间: 2024-03-06 11:44:55 浏览: 29
在Java 1.8及更高版本中,MaxPermSize参数已经被废弃,不再起作用。MaxPermSize是用于设置永久代(Permanent Generation)的最大大小的参数。永久代是Java虚拟机(JVM)中的一块内存区域,用于存储类的元数据、常量池等信息。
在Java 1.8之前的版本中,永久代的大小是固定的,并且可以通过MaxPermSize参数进行调整。但是,由于永久代的大小是有限的,当加载大量类或者使用大量字符串常量时,可能会导致永久代溢出的问题。
为了解决这个问题,Java 1.8引入了元空间(Metaspace),取代了永久代。元空间是使用本地内存来存储类的元数据等信息,不再受到固定大小的限制。因此,MaxPermSize参数在Java 1.8及更高版本中已经失效。
如果你需要调整类元数据的大小,可以使用MaxMetaspaceSize参数来设置元空间的最大大小。默认情况下,元空间的大小是根据系统内存动态分配的。
相关问题
-XX:MaxPermSize 在1.8过期了吗
我可以回答这个问题。在Java 8中,-XX:MaxPermSize已经被移除了,取而代之的是Metaspace。Metaspace是一个新的内存区域,用于存储类元数据。因此,如果您使用Java 8或更高版本,则不需要再使用-XX:MaxPermSize。
maxpermsize优化
MaxPermSize 是指 PermGen 空间的最大大小,即永久代最大容量,默认值为64m。
在JDK8及之后的版本中,PermGen 被移除,取而代之的是 Metaspace。因此,MaxPermSize 参数在这些版本中已经不再起作用。
然而,在JDK7及之前的版本中,MaxPermSize 可以用来优化永久代的性能和内存使用。如果应用程序使用大量字符串常量、类或方法等,可能会导致PermGen空间不足。
为了优化MaxPermSize,可以根据应用程序的需求适当增加该参数的值。可以通过命令行参数或在启动脚本中配置。
由于PermGen空间是有限的,如果应用程序实际需要的空间超出了MaxPermSize的设置,会导致OutOfMemoryError错误。因此,需要根据应用程序的内存需求合理设置MaxPermSize的值。
在优化MaxPermSize时,还可以考虑使用一些调优工具。例如,可以通过JVisualVM来监视PermGen空间的使用情况,并根据实际情况进行调整。
总之,MaxPermSize 是用来调整永久代空间大小的参数,在JDK8及之后的版本中已经不再起作用。在JDK7及之前的版本中,可以根据应用程序的需求进行优化,避免出现PermGen空间不足的问题。