String 사용에 대한 이야기
1. String은 gc에 영향을 준다. 왜 ?
프로그램 코드 작성시 가장 많이 사용하는 객체가 String, Collection이다. 특히 String 연산은 코드에서 여러가지 이유로 많이 사용 한다.
다음 코드를 보자
a의 메모리 사용량은 어떻게 될까 ?
첫번째 수행 : a += aValue 723 번지 : gc 대상
두번째 수행 : a += aValue 725 번지 : gc 대상
세번째 수행 : a += aValue .....
데이터 크기도 커지면서 주소 할당을 하고 있다. 사용하지 않는 주소는 gc대상 입니다.
2. StringBuffer or StringBuilder로 변경
첫번째 수행 : a.append(aValue)
두번째 수행 : a.append(aValue)
세번째 수행 : a.append(aValue)
주소는 변경 되지 않고 데이터 만 변경되어 들어 간다.
3. StringBuffer와 StringBuilder를 어떻게 사용해야 하나
StringBuffer
스레드에 안전한 프로그램이 필요할 때 사용
즉. 멀티쓰레드환경에서 synchronized키워드가 가능하므로 동기화가 가능
static으로 선언한 문자열 변경 또는 singleton으로 선언된 클래스에 선언된 문자열
StringBuilder
스레드에 안전한지 여부와 전혀 관계 없는 코드
즉. 동기화를 지원하지 않기 때문에 멀티 쓰레드 환경에서는 적합하지 않다.
메서드내 지역 변수
Last updated