일개미 : 일상과 개발의 미학
String Buffer 와 String Builder 의 차이 본문
점브 투 자바로 공부하던 도중에 이해가 잘 가지않아 추가적으로 찾아본 내용이다.
우선 String은 문자로 된 값의 타입인데, 정의하자면 변경 되지 않는 Character 문자열 자체이며,
다른 문자열을 추가했을 때 새로운 메모리를 잡아먹는다.
이러한 특성으로 인해 String은 문자열을 자주 읽어들이는 경우 좋은 성능을 기대할 수 있지만,
문자열 추가 삭제 수정 등이 빈번하게 일어나는 알고리즘에 String클래스를 사용하면 heap메모리에 많은 임시 garbage가 생성된다.
이를 해결하기위해 String Builder 와 String Buffer 를 도입되었고, 그 차이는 동기화의 유무이다.
String Buffer는 동기화 키워드를 지원하여 멀티스레드 환경에서 안전하다.
(* 참고로 String도 불변성을 가지기때문에 마찬가지로 멀티스레드 환경에서 안전하다.)
String Builder는 동기화를 지원하지 않기 때문에 멀티스레드에선 적합하지 않지만 단일스레드에서 성능은 String Buffer보다 뛰어나다.
따라서 동기화를 고려할 필요가 없는 상황에서는 StringBuffer 보다는 StringBuilder를 사용하는 것이 유리하다.
혹시나 이 글을 읽고 스레드에 대한 이해가 필요할 경우 추가적으로 스레드 설명에 대한 좋은 포스팅을 읽어보길 바란다.
단일스레드와 멀티스레드 >> 참조 출처 : tistory - 반짝반짝 빈나는
'Developments > Java' 카테고리의 다른 글
Java의 예외처리 구조 및 필요성 (0) | 2022.12.16 |
---|---|
Java 버전 및 JDK와 SE 등 (0) | 2022.09.25 |
객체지향 프로그래밍과 자바의 기초 문법 구조 (0) | 2022.09.20 |