具体来说,为什么对解决PermGen OutOfMemoryError问题有帮助?
另外,为我提供有关JVM参数文档的答案,还有加分。
具体来说,为什么对解决PermGen OutOfMemoryError问题有帮助?
另外,为我提供有关JVM参数文档的答案,还有加分。
Answers:
永久空间是VM使用的类,方法,内部化的字符串以及类似对象的存储位置,并且从不释放(因此命名)。
这篇Oracle文章简洁地介绍了HotSpot GC的工作原理和参数化,并建议您在加载许多类时增加此空间(对于应用程序服务器和某些Eclipse这样的IDE,通常是这种情况):
对于大多数应用程序,永久生成不会对垃圾收集器的性能产生明显影响。但是,某些应用程序会动态生成并加载许多类。例如,JavaServer Pages(JSP)页面的某些实现。这些应用程序可能需要更大的永久代来保留其他类。如果是这样,可以使用命令行选项-XX:MaxPermSize =来增加最大永久代大小。
请注意,该其他Oracle文档还列出了其他HotSpot参数。
更新:从Java 8开始,permgen空间和此设置都消失了。用于加载的类和方法的内存模型是不同的,并且不受限制(使用默认设置)。您不应再看到此错误。
在Java 8中,该参数通常用于打印这样的警告消息:
Java HotSpot(TM)64位服务器VM警告:忽略选项MaxPermSize = 512m;在8.0中删除了支持
之所以在Java 8中收到此消息,是因为Permgen已被Metaspace取代,以解决PermGen的一些缺点(如您所见,这些缺点之一是它的大小固定)。
仅供参考:关于元空间的文章:http ://java-latte.blogspot.in/2014/03/metaspace-in-java-8.html