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

java.lang.OutOfMemoryError:使用Mule mmc和Tomcat 7的PermGen空间

简意
2023-03-14

我们的环境中有Java . lang . out of memory error:perm gen空间:Windows Server 2012 R2 64位8GB RAM JRE 1.7 u80 Tomcat 7 . 0 . 73 ActiveMQ 5 . 9 . 0 Mule runtime 3 . 5 . 4 Mule management console 3 . 5 . 3html" target="_blank">部署在Tomcat 7上的webservice war文件使用部署在Tomcat 7上的PhantomJS 1.9.8

setenv.batTomcat/bin文件夹下的文件,设置如下:setenvJAVA_OPTS=-Xms512M-Xmx2048m-XX: PermSize=1024m-XX: MaxPermSize=1024m

此外,JVM的注册表设置如下tomcat7w.exe:初始内存池:256 MB最大内存池:1536 MB

谁能解释一下setenv.bat文件设置和内存池的tomcat7w.exe设置哪个优先?此外,对于这种环境,什么应该是理想的设置,因为这些设置目前正在windows server 2008 R2 64位和16GB内存上运行?

共有3个答案

范修伟
2023-03-14

对于理想的内存设置

Xms和Xmx应该相等,

在catalina.batJAVA_OPTS变量中,您应该定义内存参数。

在开始时,这将优先考虑。

多保重

巫培
2023-03-14

正如@GKGeorgiev所说,这将取决于您如何启动Tomcat。

我建议你做一个小实验:

>

  • setenv.bat 中的最大堆大小设置更改为足够小的值,以便立即触发故障。

    启动雄猫。

    如果这导致行为改变(例如立即失败),您知道setenv.bat文件是优先的文件。如果不是,那就不是。

    然后用另一种方法做实验;i、 e.更改等效注册表设置,看看是否有任何影响。

    另外,请查看适用于您使用的启动方法的Tomcat文档。

    最后,建议升级到Java8。Java7远远超出了它的EOL,运行一个没有安全补丁的Java版本是有风险的。

  • 萧嘉茂
    2023-03-14

    这取决于你如何启动你的雄猫,无论你是作为Windows服务还是通过卡塔利娜.bat启动它。

    您可以查看以下帖子:[问题]:将Tomcat配置为服务(无catalina.bat)

     类似资料:
    • 据此: 在系统中安装了Maven之后,下一步就是对其进行微调以获得最佳性能。默认情况下,最大堆分配为256-512 MB(-XMS256M到-XMX512M)。在构建大型复杂Java项目时,此默认限制不起作用,建议您至少拥有1024 MB的最大堆。 现在,我认为堆空间和permgen空间的max和min值是由JVM设置的。Maven只能通过我们设置的MAVEN_OPTS env变量来设置它们。那么

    • 问题内容: 我的文件为 9MB ,加载工作簿时出现此错误。 这条线导致 我该如何解决? 问题答案: 我认为默认堆大小是128M 您可以使用java的参数来增加它 例如

    • 我们正在Java-8-Oracle上运行。 我们在六个月前转移到java8。 在过去的几天里,我们得到了一个OOME不时,我们没有能够识别或再现的问题。 当我们执行对服务器(tomcat)的调用时,我们会在StackTrace上得到以下错误: 重新启动服务器解决了问题。对其他服务器的相同调用可以工作,对同一服务器的另一种类型的调用也可以工作。 查看GC日志时,我们会看到: 返回: 我在jstat日

    • 我在运行Java cs应用程序时遇到OutOfMemoryError错误。根据错误消息,错误似乎是在将XML字符串传输到Java对象时发生的。 传输代码如下所示 我查看了日志,找到了触发此错误的字符串。然后,我使用上面的代码将这个字符串转换为java对象,大约转换了10万次。未报告任何错误。 我有数千个这样的应用程序在windows xp系统中运行,我担心这会导致一个巨大的问题。我谷歌了这个错误,

    • 我正在用一个项目中相互协作的两个独立的Web应用程序来试验一些问题。在进行了X次部署之后,我得到了臭名昭著的“java.lang.OutofMemoryError:PermGen Space”错误。 所以我已经用VisualVM监视PermGen空间一段时间了,不断地重新部署应用程序,看看发生了什么。 这里有奇怪的行为: 首先,我已经重新部署了15倍以上的第一个应用程序。行为与预期的一样:内存图就

    • 问题内容: 我正在尝试在Sun的Hotspot JVM上运行时诊断错误,并且想知道我的程序在各个点使用了多少PermGen空间。有没有办法以编程方式找出这些信息? 问题答案: 您可以使用以下方式: 这将为您提供所有类型的内存。您对“ Perm Gen”类型感兴趣。