String str = new String();
str += "asdf"; --- (1)
str += "asdf"; --- (2)
str += "qwer"; --- (3)
...
을 계속 반복하면
- (메모리 주소: 100) str = "asdf"
- 메모리 주소 100은 쓰레기가 된다.(GC의 대상)
(메모리 주소: 200) str = "asdfasdf" - 메모리 주소 200은 쓰레기가 된다. (GC의 대상)
(메모리 주소: 300) str = "asdfasdfqwer"
이런 반복 작업이 계속 되면 GC를 계속 하게 되고, 시스템의 CPU을 사용하게 되고 시간도 많이 소요된다.
StringBuilder나 StringBuffer를 사용하면 새로운 객체를 생성하는 것이 아니라, 기존 객체에 덧붙여 사용하게 된다.
StringBuffer - thread safe
StringBuilder - thread unsafe
CharSequence
- 인터페이스
- 이를 구현한 클래스: String, StringBuffer, StringBuilder ...
- 다음과 같을 때 사용한다.
자바 성능 튜닝 이야기 - 이상민 저
'개발 > Java' 카테고리의 다른 글
[리팩토링] 함수형 인터페이스와 lambda (0) | 2023.08.16 |
---|---|
[리팩토링] Optional과 orElseGet 그리고 함수형 인터페이스 (0) | 2023.08.16 |
Wrapper Class: int와 Integer (0) | 2023.07.09 |
댓글