java.lang.OutOfMemoryError:embeded jetty中的PermGen空间

时间:2013-12-11 08:52:13

标签: java eclipse jetty

我正在尝试在jetty服务器中部署多个应用程序。目前我有50个申请,我正在按照这个答案 jetty server 9.1 multiple embeded ports and application in same server instance

我在第38次部署时得到java.lang.OutOfMemoryError: PermGen space。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:11)

任何内存控制选项都是您为嵌入式Jetty应用程序启动的JVM的一部分。这意味着,为了增加JVM使用的PermGen,在启动嵌入式Jetty实例时,您需要对JVM使用命令行选项-XX:MaxPermSize

示例:

$ java -XX:MaxPermSize=1024m -cp myserver.jar com.company.EmbeddedMe

由于您添加了标记,因此我假设您想知道如何配置"运行配置"对于同样的事情。

在运行中>运行配置>参数选项卡> VM参数,放-XX:MaxPermSize=1024m

答案 1 :(得分:1)

增加jetty实例的perm和堆大小

http://pic.dhe.ibm.com/infocenter/chghelp/v5m3/topic/com.ibm.rational.change.install.doc/topics/ch_t_ig_change_java_max_heap_jty.html

当你通过命令行运行它时:

java -jar -XX:MaxPermSize=512m jety.jar 

如果不起作用,请增加尺寸(例如1024米)

答案 2 :(得分:0)

部署会生成一堆Class个对象,这些对象在永久空间中分配,从不真正收集垃圾。

要解决此问题,您可能希望使用JVM选项-XX:MaxPermSize=128m增加永久空间的大小(有关更多JVM选项/说明,请参阅here)。

请注意,从Java8开始,perm空间为removed。因此,您也可以将JDK升级到Java8。