어제 오늘 내일

[Java StringBuilder] trimToSize() – 버퍼 최적화하기 본문

IT/Java

[Java StringBuilder] trimToSize() – 버퍼 최적화하기

hi.anna 2025. 8. 24. 01:05

StringBuilder는 문자열을 효율적으로 수정하기 위해 내부적으로 버퍼(capacity)를 관리합니다.
하지만 문자열을 다 사용하고 나면, 불필요하게 큰 버퍼가 남아 메모리를 차지할 수 있습니다.
이때 사용하는 메서드가 바로 trimToSize()입니다.

 

1. trimToSize() 기본 사용법

public void trimToSize()
  • 내부 버퍼 용량(capacity)을 현재 문자열 길이(length)와 동일하게 줄임
  • 메모리를 최적화할 때 유용
StringBuilder sb = new StringBuilder(100); // 용량 100 확보
sb.append("Hello");
System.out.println("길이: " + sb.length());     // 5
System.out.println("용량: " + sb.capacity()); // 100

sb.trimToSize();
System.out.println("trim 후 용량: " + sb.capacity()); // 5

👉 "Hello"만 남았기 때문에, 불필요한 버퍼가 제거되고 용량이 줄었습니다.

 

2. 언제 유용할까?

  • 대량의 문자열을 다룬 후, 더 이상 추가할 필요가 없을 때
  • 긴 문자열을 처리하고 난 뒤, 메모리를 회수하고 싶을 때

예: 로그 파일을 메모리에 임시로 담았다가 가공 후, 최종 문자열만 남기고 싶을 때

StringBuilder log = new StringBuilder(10000);
// ... 대량 데이터 처리 ...
log.setLength(500); // 필요한 부분만 남김
log.trimToSize();   // 메모리 최적화

👉 불필요한 버퍼 공간을 줄여 메모리 절약 효과가 있습니다.

 

3. 주의할 점

  • trimToSize()는 성능 최적화용이므로 자주 호출할 필요는 없음
  • 문자열을 추가할 일이 아직 남아 있다면 굳이 호출하지 않는 것이 좋음 (다시 버퍼 확장이 필요해 성능 저하 가능)

 

4. 정리

  • trimToSize()capacity를 현재 length로 줄여 메모리 최적화
  • 대량 데이터 처리 후 더 이상 문자열을 늘리지 않을 때 유용
  • 필요 이상으로 자주 쓰면 성능에 오히려 악영향 가능

 

🔑 한 줄 정리
👉 trimToSize()StringBuilder의 불필요한 버퍼를 줄여 메모리를 최적화하는 도구다!

 

 

반응형
Comments