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

+ Recent posts