자바 성능 튜닝 이야기 Static
2022, May 16
알아보게 된 이유.
자바 성능 튜닝 이야기라는 책을 읽으며 자바의 성능을 올릴 수 있는 이야기들을 정리해보고 자 한다.
Static 제대로 한번 써보자
[static의 특징]
staitc의 특징은 다른 JVM에서는 static이라고 선언해도, 다른 주소나 다른 값을 참조하지만 같은 JVM, WAS 인스턴스에서는 같은 주소에 존재하는 값을 참조한다. GC의 대상이 되지 않는다. 웹 환경에서 static을 잘못 사용하는 경우 여러 쓰레드에서 하나의 변수에 접근할 수 도 있기 때문에 데이터가 꼬일 수 있다.
1. 자주 사용하고 절대 변하지 않은 변수는 final static으로 선언하자.
2. 설정 파일 정보도 static으로 관리하자
3. 코드성 데이터는 DB에서 한 번만 읽자.
[static과 메모리 릭]
static으로 선언한 부분은 GC가 되지 않는다. 만약 다른 클래스에서 데이터를 Vector, ArrayList에 담을 때 해당 객체를 static으로 선언하면 지속적으로 해당 객체에 데이터가 쌓이면 더이상 GC가 되지 않으면서 시스템으 OutOfMemoryError를 발생시킨다.
더 이상 사용가능한 메모리가 없어지는 현상을 메모리 릭이라고 하는데 static과 Collection 객체를 잘못 사용하면 메모리 릭이 발생.
static은 반드시 메모리에 올라가며 GC의 대상이 되지 않는다. 객체를 다시 생성한다고 해도 그 값은 초기화되지 않고, 해당 클래스를 사용하는 모든 객체에서 공유하게 된다. static을 사용하는 것이 걱정이 된다면, 아예 쓰지 않는 것이 좋다. ›