OutOfMemoryError:Java.util.Arrays.copyOfRange处的Java堆空间

OutOfMemoryError:Java.util.Arrays.copyOfRange处的Java堆空间,java,gwt,errai,Java,Gwt,Errai,这是GWT DevMode控制台在将image base64字符串(大小约360KB)传递给具有字符串参数的GWT方法时引发的错误: java.lang.OutOfMemoryError:位于的java堆空间 copyOfRange(Arrays.java:2694)位于 java.lang.String.(String.java:234)位于 toString(StringBuilder.java:405)位于 org.jboss.errai.marshalling.client.api.Ma

这是GWT DevMode控制台在将image base64字符串(大小约360KB)传递给具有字符串参数的GWT方法时引发的错误:

java.lang.OutOfMemoryError:位于的java堆空间 copyOfRange(Arrays.java:2694)位于 java.lang.String.(String.java:234)位于 toString(StringBuilder.java:405)位于 org.jboss.errai.marshalling.client.api.MarshallerFactoryImpl$23.\u marshallL1(MarshallerFactoryImpl.java:1310) 在 org.jboss.errai.marshalling.client.api.MarshallerFactoryImpl$23.marshall(MarshallerFactoryImpl.java:1326) 在 org.jboss.errai.marshalling.client.api.MarshallerFactoryImpl$23.marshall(MarshallerFactoryImpl.java:1) 在 org.jboss.errai.marshalling.client.marshallers.QualifyingMarshallerWrapper.doNotNullMarshall(QualifyingMarshallerWrapper.java:93) 在 org.jboss.errai.marshalling.client.marshallers.AbstractNullableMarshaller.marshall(AbstractNullableMarshaller.java:29) 在 org.jboss.errai.marshalling.client.api.MarshallerFactoryImpl$24.marshall(MarshallerFactoryImpl.java:1402) 在 org.jboss.errai.marshalling.client.api.MarshallerFactoryImpl$24.marshall(MarshallerFactoryImpl.java:1) 在 org.jboss.errai.marshalling.client.marshalling.toJSON(marshalling.java:83) 在 org.jboss.errai.enterprise.client.jaxrs.MarshallingWrapper.toJSON(MarshallingWrapper.java:32) 在 org.jboss.errai.enterprise.client.jaxrs.JaxrsProxyLoaderImpl$1com\u myapp\u client\u shared\u service\u PasteServiceImpl.createPaste(JaxrsProxyLoaderImpl.java:194) 在 com.myapp.client.local.PastePage.onPasteImage(PastePage.java:257) 位于com.myapp.client.local.PastePage$4$1.run(PastePage.java:162) 位于com.google.gwt.user.client.Timer.fire(Timer.java:149) sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于 invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.lang.reflect.Method.invoke(Method.java:601) com.google.gwt.dev.shell.MethodAdapter.invoke(methodAdapter.java:103) 在 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 在 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) 在 com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337) 在 com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218) 在 com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136) 在 com.google.gwt.dev.shell.ModuleSpace.invokenactive(ModuleSpace.java:561) 在 com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269) 在 com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 在com.google.gwt.core.client.impl.impl.apply(impl.java)上 com.google.gwt.core.client.impl.impl.entry0(impl.java:213)位于 sun.reflect.GeneratedMethodAccessor69.invoke(未知源)


查看日志,它看起来不像是客户端问题,更像是编组问题。

它只是意味着JVM内存不足。发生这种情况时,您基本上有两种选择:

  • 允许JVM使用-Xmx VM参数使用更多内存。例如,允许JVM使用1GB(1024MB)的内存

  • 改进/修复应用程序,使其使用更少的内存

在许多情况下,如内存泄漏,第二种选择是唯一的声音选择。当应用程序保留越来越多的对象引用并且从不释放它们时,就会发生内存泄漏。因此,垃圾收集器将永远不会收集这些对象,并且可用的可用内存将越来越少,直到我们达到应用程序无法正常运行的可用内存不足的地步。此时,JVM将抛出一个OOM


试试这个解决方案。

它只是意味着JVM内存不足。发生这种情况时,您基本上有两种选择:

  • 允许JVM使用-Xmx VM参数使用更多内存。例如,允许JVM使用1GB(1024MB)的内存

  • 改进/修复应用程序,使其使用更少的内存

在许多情况下,如内存泄漏,第二种选择是唯一的声音选择。当应用程序保留越来越多的对象引用并且从不释放它们时,就会发生内存泄漏。因此,垃圾收集器将永远不会收集这些对象,并且可用的可用内存将越来越少,直到我们达到应用程序无法正常运行的可用内存不足的地步。此时,JVM将抛出一个OOM


尝试此解决方案。

建议在发生错误时添加配置文件以捕获转储文件,并使用mat分析最终原因可能会有所帮助。

建议在发生错误时添加配置文件以捕获转储文件,并使用mat分析最终原因可能会有所帮助。

但仍然-增加您的Heap@xybrek你在用什么netbeansAdd内存参数,-XX:MaxPermSize=64m,您可以在上阅读更多内容,但仍然可以增加内存参数Heap@xybrek您是否使用netbeansAdd内存参数,-XX:MaxPermSize=64m,您可以在什么解决方案中阅读更多内容?“修复你的应用程序”?不是很有帮助什么解决办法?“修复你的应用程序”?不是很有帮助