【发布时间】:2011-01-26 17:25:12
【问题描述】:
当我调用这个方法时,我得到一个 java outOfMemoryError - 我在一个循环中使用它来依次解析许多大文件。我的猜测是result.toString() 在循环期间没有正确收集垃圾。如果是这样,我应该如何解决它?
private String matchHelper(String buffer, String regex, String method){
Pattern abbrev_p = Pattern.compile(regex);//norms U.S.A., B.S., PH.D, PH.D.
Matcher abbrev_matcher = abbrev_p.matcher(buffer);
StringBuffer result = new StringBuffer();
while (abbrev_matcher.find()){
abbrev_matcher.appendReplacement(result, abbrevHelper(abbrev_matcher));
}
abbrev_matcher.appendTail(result);
String tempResult = result.toString(); //ERROR OCCURS HERE
return tempResult;
}
【问题讨论】:
-
“大文件”有多大?可能是您没有为 JVM 分配足够的内存。
-
显示错误文本以供进一步调查。
-
OString Length: 2769348 的纯字符串怎么样?大部分字符串是拍摄照片的nexString
标签: java string out-of-memory heap-memory stringbuilder