이 메서드를 호출하면 java outOfMemoryError가 발생합니다. 루프에서이를 사용하여 많은 큰 파일을 순차적으로 파싱합니다. 내 생각 엔 result.toString()
은 루프 중에 제대로 가비지 수집되지 않습니다. 그렇다면 어떻게 수정해야합니까?java outOfMemoryError with stringbuilder
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에 충분한 메모리를 할당하지 않은 것일 수도 있습니다. – Ash
추가 조사를 위해 오류 텍스트를 표시하십시오. – Artic
의 순수한 문자열은 어떻습니까? OString Length : 2769348? 대부분의 문자열은 캡처 한 사진의 nexString입니다. –