String += 사용 시 메모리 초과가 나는 이유🔗 문제 링크: 백준 1874번 - 스택 수열
이 글은 해당 문제를 풀면서 발생한 메모리 초과 이슈를 해결하며 정리한 기록입니다.
알고리즘 문제를 풀던 중, 단순히 문자열을 이어붙였을 뿐인데 메모리 초과(Memory Limit Exceeded)가 발생했다.
이유가 궁금해서 원인을 분석해보고, 어떻게 해결했는지를 정리해두려고 한다.
String vs StringBuilder반복문 안에서 String +=을 사용했더니 ➤ 메모리 초과 발생
String은 불변 객체 (Immutable)+= 할 때마다 새로운 문자열 객체가 생성됨StringBuilder는 내부 버퍼에 문자열을 직접 이어붙이므로StringBuilder가 필수.toString()으로 문자열로 변환setLength(0)을 사용하면 됨+= 쓰지 말 것!StringBuilder를 사용하면 메모리 절약 + 성능 향상String 반복은 조용한 성능 폭탄 💣setLength(0)으로 초기화하면 StringBuilder를 다시 쓸 수 있다StringBuilder부터 떠올리자!String result = "";
for (int i = 0; i < 100000; i++) {
result += "+\n";
}
System.out.print(result);