static : global state
static 변수는 코드 여러 부분에서 영향을 받을 수 있어 변화를 추적하기가 어렵다.
1. static은 객체 지향 적이지 않다.
각 객체들의 데이터들이 캡슐화 되어야한다는 객체지향의 원칙에 위배된다.
예를 들어 static변수를 공유하여 여러 프로그램에서 사용할때 서로의 상태에 영향을 줄 수 있다. (데이터 정합성 문제 발생)
오버라이딩이 불가능하다.
메모리 회수가 어렵다 -> 가상머진의 메모리 부족
2. 객체의 라이프 타임
static변수는 프로그램이 실행되고 있는 내내 살아있게 된다. 그 클래스 작업이 끝났더라도 static변수가 점유하고 있는 메모리는 garbage collector에 의해 회수되지 않는다.반대로 그 변수를 인스턴스화 해서 main()함수에서 하나의 인스턴스로 생성하고, 그 인스턴스에게 함수 호출을 시키고 그 함수 호출이 끝나면 인스턴스를 소멸된다.
static은 재사용성이 떨어진다.
원본 :
'* > What I did today' 카테고리의 다른 글
null 대신 Optional 클래스 (0) | 2023.01.02 |
---|---|
GC (0) | 2023.01.01 |
static 변수는 JVM의 어디에 저장될까 ? (0) | 2022.12.25 |
JVM (0) | 2022.12.24 |
Cache (2) | 2022.12.15 |
서버가 죽는 이유 ,message queue (0) | 2022.07.20 |
AWS Certified Cloud Practitioner - 합격 후기, 참고자료 정리 (4) | 2021.12.14 |
11/5 (함께자라기) (1) | 2021.11.06 |