반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- table
- 자바스크립트
- javascript
- 테이블
- CMD
- windows
- 인텔리제이
- 이클립스
- IntelliJ
- html
- Button
- ArrayList
- Array
- string
- Eclipse
- Java
- 자바
- vscode
- 정규식
- 배열
- 문자열
- json
- list
- Visual Studio Code
- js
- Maven
- 이탈리아
- date
- input
- CSS
Archives
- Today
- Total
어제 오늘 내일
[Java StringBuilder] trimToSize() – 버퍼 최적화하기 본문
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
의 불필요한 버퍼를 줄여 메모리를 최적화하는 도구다!
반응형
'IT > Java' 카테고리의 다른 글
[Java 기초] 리스트 안에 리스트 넣기 (0) | 2025.08.24 |
---|---|
[Java 기초] 배열 안에 리스트(List) 담기 (0) | 2025.08.24 |
[Java String] String.join() – 문자열 합치기 간단하게 (0) | 2025.08.23 |
[Java] ArrayList로 2차원 배열 만들기, 활용하기 (0) | 2025.08.23 |
[Java String] String.split() – 문자열을 원하는 기준으로 나누기 (0) | 2025.08.22 |
Comments