Ich erhalte einen Java OutOfMemoryError, wenn ich diese Methode aufrufen - ich verwende es in einer Schleife, um viele große Dateien nacheinander zu analysieren. Meine Vermutung ist, dass result.toString()
nicht richtig Müll während der Schleife gesammelt wird. Wenn ja, wie sollte ich es beheben?java outOfMemoryError mit 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;
}
Wie groß ist eine "große Datei"? Es kann sein, dass Sie der JVM nicht genügend Speicher zuweisen. – Ash
Fehlertext für weitere Untersuchungen anzeigen. – Artic
Wie wäre es mit dem reinen String von OString Länge: 2769348? Die meisten der String ist der NexString der Fotos erfasst –