1. static 특징
- 반드시 메모리(data 영역)에 올라간다.
- GC 대상이 아니다. : 바로 이점을 활용해야 static 사용에 큰 이점을 얻을 수 있다.
- 그래서 여러 개의 인스턴스(객체)를 만들더라도 그 스태틱 영역은 같은 주소에 존재하는 값을 참조한다.
- 이때, 같은 JVM에서만 해당된다. 만약 다른 JVM에서 생성된 static 변수는 다른 주소나 다른 값을 참조한다.
- 자주 사용하고 절대 변하지 않는 변수는 static final을 사용하면 GC 대상이 되지 않아 성능상 이점이 있다.
- 설정 파일 정보도 static으로 관리하면 좋다. 왜냐하면 클래스의 객체를 생성할 때 마다 설정 파일을 로딩하면 엄청난 성능 저하가 발생한다.
2. JVM 간의 상이한 결과가 나오는 것을 방지하기 위한 해결책
memcached, EhCache 등 캐시를 사용
2. static 블록
- 클래스의 객체가 생성되면서 딱 한 번만 호출되는 블록(최초 로딩될 때)
3. static 함수 사용 이유?
- 메서드를 사용할 때, 객체를 해당 로직에 직접 생성하지 않고 메서드에 접근할 수 있어서 결합도를 낮출 수 있다.(의존성을 낮춘다)
- GC 대상이 아니다. 즉, 자주 사용하는 함수를 static으로 놓으면 성능에 큰 이점이 있다.
- 단점으로는 함수 내부에서 클래스 변수(static)만 사용할 수 있다.
- 즉, static이 아닌 변수 이름은 static context에서 참조할 수 없다.
4. static 사용 예?
- connectionpool에서 connection 객체를 미리 만들어 놓고 사용한다.
- 즉, GC 대상이 되지 않는데, static을 사용해서 그렇다.
'JAVA' 카테고리의 다른 글
Anonymous class vs lambda (0) | 2022.06.25 |
---|---|
final (0) | 2022.04.27 |
nested class(중첩 클래스) (0) | 2022.04.23 |
절차지향과 객체지향의 차이점 (0) | 2022.04.23 |
nested class (0) | 2022.04.20 |