处理java堆空间异常

时间:2014-09-17 23:30:39

标签: java

所以,让我们说我有一个

  String s = "{(30,2884090,1410450570357,235),(30,2863348,1410451100148,285)}";
  Matcher match = Pattern.compile("(\\d+,)*\\d+").matcher(s);

所以问题有时候,String s太大了,我得到堆错误:

 java.lang.OutOfMemoryError: Java heap space
 at java.util.Arrays.copyOfRange(Arrays.java:2694)
 at java.lang.String.<init>(String.java:203) 
  1. 我如何将此作为例外处理,以便我的代码仍然保持
  2. 去处理这么大的字符串有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您无法将其作为例外处理。您可能宁愿:

  • 通过XMS / XMX参数(See here
  • 增加JVM堆的大小
  • 使用流媒体方法,因此并非所有内容都会加载到内存中。

答案 1 :(得分:0)

看看here,它是处理不同类型的OOM(内存不足)异常和字符串的一个很好的资源。它显示了如何使用concatenation(简单但容易引发错误!)或StringBuffer(一个优化的解决方案)

此外,如果需要,可以使用-Xmx command, some helpful hints here

增加可用堆大小