当前位置: 首页 > 知识库问答 >
问题:

java.lang.OutOfMemoryError:PermGen空间解决方案

成浩漫
2023-03-14

类似的问题是存在的,但没有一个答案受到关注..

这里说“解决这个问题的一个方法是JDBC驱动程序由通用类加载器而不是应用程序类加载器加载,你可以通过将驱动程序的jar文件转移到tomcat lib中,而不是捆绑在web应用程序的war文件中

不明白通过通用类加载器加载意味着什么,它与应用程序类加载器有什么不同。

共有3个答案

皇甫心思
2023-03-14

OutOfMemoryError:PermGen空间通常只是使用Tomcat的热重部署功能时的问题。如果部署中使用了大量的类,也可能发生这种情况。

增加 VM 中可用的 PermGen 数量将解决大量类的问题。这可以通过将 -XX:MaxPermSize=128m-XX:MaxPermSize=256m 添加到环境变量JAVA_OPTSCATALINA_OPTS来完成(这通常可以在 Tomcat 启动脚本中完成)。如果您直接启动 Tomcat,则可以将这些环境变量导出到 shell 中。

不幸的是,这并没有完全解决重新部署的问题,它只是让你可以在用完PermGen之前重新部署更多次。要解决此问题,您需要确保您的web应用程序正确且完整地卸载。这包括确保所有由你的webapp启动的线程都停止,并且加载的JDBC驱动都被正确注销。解决这个问题的另一种方法是,在对应用程序进行更改时,不要使用热重新部署和重新启动Tomcat。

唐恺
2023-03-14

每次部署应用程序并从中加载类(以使用它)时,应用程序类加载器将加载该类。应用程序越多,加载的“相同”类越多。如果使用tomcat的“通用”类加载器,则每次tomcat安装只加载一次类。

白翰海
2023-03-14

这意味着加载JDBCDriver类的类加载器是应用程序服务器的类加加载器,应用程序服务器是应用程序类加载者的父级。因此,该驱动程序可用于服务器上的每个应用程序,并且不会在每次重新启动应用程序时重新加载(如果未正确注销,可能会导致permgen出现问题)

 类似资料:
  • 问题内容: 我收到以下错误“ http-9000-5” java.lang.OutOfMemoryError:PermGen空间 org.apache.catalina.core.ApplicationDispatcher调用SEVERE:Servlet jsp的Servlet.service()抛出异常java.lang.OutOfMemoryError:PermGen空间。 我的应用程序使用a

  • 问题内容: 环境:Linux / Windows7,Java 1.6.0.03/37或1.7 我下载了jenkins.war,并使用以下脚本/命令进行了初始设置后,我下载了一些插件(10-15),并尝试重新启动Jenkins,它起作用了。然后,我得到了更多的插件(总共30-40个),选择了Install或download + then + install,Jenkins却没有出现。 即使用star

  • 问题内容: 我收到此异常。我正在使用Eclipse Juno和Tomcat 7.0。在控制台中,每10-15分钟至少发生一次此异常。怎么解决呢? 问题答案: 与其在eclipse.ini中进行更改,不如安装Java 8 。 我安装了Java 8,但现在没有异常。

  • 问题内容: 我在构建Maven项目时遇到此错误,我增加了MAVEN_OPTS,但同样,发现了一些类似的帖子,但它们引用的是其他内容。我该如何解决? 我不担心如何 在Maven生态系统中 进行修复 __ 问题答案: 当您说增加时,您增加了什么价值?您是否增加了,例如: (或在Windows上:)

  • 给定一个值N,如果我们想换N美分,并且我们有无限量的S={S1,S2,…,Sm}值的硬币,我们可以用多少种方式来换?硬币的顺序无关紧要。 例如,对于N=4和S={1,2,3},有四种解:{1,1,1,1},{1,1,2},{2,2},{1,3}。所以输出应该是4。对于N=10和S={2,5,3,6},有五个解:{2,2,2,2},{2,2,3,3},{2,2,6},{2,3,5}和{5,5}。所以

  • 这里的一个明显问题是,对于我所考虑的维度,这种方法消耗的内存将超过可行的(需要空间,是元素数,是最大容量)。进一步研究,我发现提到了(例如,这里也参见Kellerer,Pferschy和Pisinger的“背包问题”)一个内存有效的方法来解决0-1背包。 我们首先将项目集合分成大小大致相等的两个子集。我们将这两个子集视为它们自己的背包问题,给定初始的最大权重,并以节省内存的方式为这两个子集确定最大