xx:maxpermsize做什么?

xoshrz7s  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(278)

具体来说,为什么它有助于修复permgen outofmemoryerror问题?
另外,还有一个额外的积分,可以让我找到有关jvm参数的文档。。。

8hhllhi2

8hhllhi21#

在java 8中,该参数通常用于打印如下警告消息:
java hotspot(tm)64位服务器vm警告:忽略选项maxpermsize=512m;支持在8.0中被移除
在Java8中获得此消息的原因是,permgen已被metaspace取代,以解决permgen的一些缺点(正如您自己所看到的,这些缺点之一是它具有固定的大小)。
仅供参考:关于元空间的文章:http://java-latte.blogspot.in/2014/03/metaspace-in-java-8.html

ztyzrc3y

ztyzrc3y2#

永久空间是存储vm使用的类、方法、内部化字符串和类似对象的地方,并且从不释放(因此得名)。
这篇oracle文章简洁地介绍了hotspot gc的工作和参数化,并建议您在加载许多类时扩展这个空间(对于应用程序服务器和一些ide,如eclipse,通常是这样):
对于大多数应用程序,永久生成对垃圾收集器性能没有明显影响。然而,有些应用程序动态地生成和加载许多类;例如,JavaServerPages(jsp)页面的一些实现。这些应用程序可能需要更大的永久性生成来容纳额外的类。如果是这样,则可以使用命令行选项-xx:maxpermsize=,增加最大永久生成大小。
请注意,其他oracle文档列出了其他热点参数。
更新:从Java8开始,permgen空间和这个设置都没有了。用于加载的类和方法的内存模型是不同的,并且不受限制(使用默认设置)。你不应该再看到这个错误了。

6tr1vspr

6tr1vspr3#

-XX:PermSize -XX:MaxPermSize 用于设置永久生成的大小。
永久生成:永久生成是保存类文件的地方。这些是编译类和jsp页面的结果。如果此空间已满,则会触发完全垃圾回收。如果完全垃圾回收无法清除旧的未引用类,并且没有空间扩展永久空间,则会抛出内存不足错误(oome),jvm将崩溃。

相关问题