传递大型String时OutOfMemoryError

时间:2013-09-10 11:33:48

标签: java gwt

我的网络应用程序在客户端传递base64字符串时遇到OutOfMemory错误,它设法从剪贴板图像获取。

当大型String作为参数传递给其他方法时,就会发生这种问题。

使用GWT传递大型base64字符串的工作是什么?

2 个答案:

答案 0 :(得分:1)

  

当大型String作为参数传递给其他方法时会出现问题。

不,不是!

将String作为参数传递不会导致OutOfMemoryError

您看到的OOME要么是通过创建String对象引起的,要么是通过对String对象执行某些操作来导致创建新对象。它不是由传递String引起的,无论它有多大。


如果您需要有关如何处理它的建议,您需要向我们展示创建String的代码和使用它的代码。但处理过大数据块的一般方法是以一种避免同时在内存中表示所有数据的方式处理数据。

答案 1 :(得分:0)

如果您使用GWT开发模式,可能是Eclipse的GWT Jetty插件,尝试使用以下命令禁用开发模式:

http://127.0.0.1:8888/index.html

而不是

http://127.0.0.1:8888/index.html?gwt.codesvr=127.0.0.1:9997

如果可行,则可以在增加JVM堆空间时继续使用dev模式,例如:

-XX:PermSize=128m -XX:MaxPermSize=256m -Xmx1224m

这必须是开发的问题。模式,因为传递String几乎不会导致OutOfMemory错误。