【问题标题】:"java.lang.OutOfMemoryError: Java heap space" when starting WSO2 Enterprise Mobility Manager启动 WSO2 Enterprise Mobility Manager 时出现“java.lang.OutOfMemoryError:Java 堆空间”
【发布时间】:2014-05-30 03:33:57
【问题描述】:

我已下载 WSO2 Enterprise Mobility Manager 1.0.0 版
我关注了Prerequisites
General Server Configurations

系统 Win 7 64 位 12GB 内存
JDK java版本“1.7.0_51” Java(TM) SE 运行时环境(内部版本 1.7.0_51-b13)
JAVA_HOME 设置为 JDK 目录

如果我执行:

<PRODUCT_HOME>\bin>wso2server.bat --run

我收到以下错误:

JAVA_HOME environment variable is set to C:\Program Files\Java\jdk1.7.0_51
CARBON_HOME environment variable is set to C:\inetpub\wwwroot\WSO2MO~1.0\bin\..
java.lang.OutOfMemoryError: Java heap space
Dumping heap to C:\inetpub\wwwroot\WSO2MO~1.0\bin\..\repository\logs\heap-dump.h
prof ...
Heap dump file created [1077051686 bytes in 5.148 secs]
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.wso2.carbon.bootstrap.Bootstrap.loadClass(Bootstrap.java:63)
    at org.wso2.carbon.bootstrap.Bootstrap.main(Bootstrap.java:45)
Caused by: java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2367)
    at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.
java:130)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractString
Builder.java:114)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:535
)
    at java.lang.StringBuffer.append(StringBuffer.java:322)
    at java.io.BufferedReader.readLine(BufferedReader.java:363)
    at java.io.BufferedReader.readLine(BufferedReader.java:382)
    at org.wso2.carbon.server.extensions.DropinsBundleDeployer.processBundle
sInfoFile(DropinsBundleDeployer.java:146)
    at org.wso2.carbon.server.extensions.DropinsBundleDeployer.perform(Dropi
nsBundleDeployer.java:71)
    at org.wso2.carbon.server.Main.invokeExtensions(Main.java:149)
    at org.wso2.carbon.server.Main.main(Main.java:94)
    ... 6 more

我尝试将第 161 行的 wso2server.bat 中的堆大小提高到 -Xms4000m XmX8000m,但随后出现错误 java.lang.OutOfMemoryError: Requested array size exceeds VM limit

如何使企业移动服务器成功运行?

【问题讨论】:

  • this 有什么帮助吗?
  • 抱歉,这些选项没有阳性结果 - -Xmx6G -XX:MaxPermSize=128M -XX:+UseCompressedOops 确切的结果是 Requested array size exceeds VM limit
  • 您可以在 WSO 邮件列表中发布您的堆转储吗?我们或许可以帮助您?

标签: java wso2


【解决方案1】:

您的-Xms-Xmx 选项太低了。 This 可能会有所帮助。这些选项后面的数字不是 KB 或 MB,它只是 B……你的 JVM 甚至不会以 8000B 运行。尝试将其增加到一个合理的数字。

编辑:您链接的先决条件表明您需要:

~ 512 MB 堆大小。这通常足以处理典型的 SOAP 消息,但要求会随着消息大小和同时处理的消息数量而变化。

【讨论】:

  • 对不起,我忘记了“m” -Xms4048m -Xmx8048m
  • @hifi-dd,你忘记了这里或环境中的“m”?
  • 我到处都加了被遗忘的“m”,我可以
【解决方案2】:

我试图在 wso2server.bat 的第 161 行将堆大小提高到 -Xms4000 XmX8000

您省略了单位 - 默认为千字节。试试:

-Xms4g -Xmx8g

您也可以尝试使用-verbose:gc 运行并使用HPjmeter 之类的工具可视化数据。这将帮助您适当地调整堆大小。

【讨论】:

  • 嗨,Amir,我尝试在堆文件heap-dump.hprof 上查看 HPjmeter,然后单击 Estimate->Memory Leaks Memory Leaks: Memory Leaks: bytes held 1074003964 char[]@700000858 出现我是该工具的新手,所以如果你想要任何其他指标请告诉我。
  • 这只是意味着您在内存中保留了大约 1 gig 的字符串。如果此答案或提供的其他答案对您有所帮助,您应该考虑对它们进行投票或接受它们。
  • 直到现在没有答案可以帮助我让 EMM-Server 运行 - 直到现在我无法对答案进行投票......失去声誉:-(
  • Amir 可以在 WSO 邮件列表中发布您的堆转储吗?我们或许可以为您提供帮助。
  • @Dilshan,我不是遇到这个问题的人 - 我是试图帮助 OP 的人。
猜你喜欢
  • 2022-11-03
  • 1970-01-01
  • 2016-07-20
  • 2010-12-08
  • 2015-05-14
相关资源
最近更新 更多