6. static 제대로 한번 써 보자
100개의 클래스의 인스턴스를 생성하더라도, static으로 선언된 변수나 함수들은 동일한 주소의 값을 참조한다.
static의 특징은 다른 JVM에서는 static으로 선언해도 다른 주소나 다른 값을 참조하지만, 하나의 JVM이나 WAS 인스턴스에서는 같은 주소에 존재하는 값을 참조한다. 그리고 GC의 대상도 되지 않는다.
static 잘 활용하기
- 자주 사용하고 절대 변하지 않는 변수는 final static으로 선언하자.
- 설정 파일 정보도 static으로 관리하자.
- 코드성 데이터는 DB에서 한 번만 읽자.
static과 메모리 릭
static으로 선언한 부분은 GC가 되지 않는다. 만약 어떤 클래스에 데이터를 Vector나 ArrayList에 담을 때 해당 Collection 객체를 static으로 선언하면 어떻게 될까? 지속적으로 해당 객체에 데이터가 쌓인다면, 더 이상 GC가 되지 않으면서 시스템은 OutOfMemoryError를 발생시킨다.