*/What I did today

Java - static 사용의 지양

haileykim2014 2022. 12. 17. 23:07

static : global state 

static 변수는 코드 여러 부분에서 영향을 받을 수 있어 변화를 추적하기가 어렵다.

1. static은 객체 지향 적이지 않다.

각 객체들의 데이터들이 캡슐화 되어야한다는 객체지향의 원칙에 위배된다. 

예를 들어 static변수를 공유하여 여러 프로그램에서 사용할때 서로의 상태에 영향을 줄 수 있다. (데이터 정합성 문제 발생)

오버라이딩이 불가능하다.

메모리 회수가 어렵다 -> 가상머진의 메모리 부족

 

2. 객체의 라이프 타임 

static변수는 프로그램이 실행되고 있는 내내 살아있게 된다. 그 클래스 작업이 끝났더라도 static변수가 점유하고 있는 메모리는 garbage collector에 의해 회수되지 않는다.반대로 그 변수를 인스턴스화 해서 main()함수에서 하나의 인스턴스로 생성하고, 그 인스턴스에게 함수 호출을 시키고 그 함수 호출이 끝나면 인스턴스를 소멸된다.

static은 재사용성이 떨어진다. 

 

 

원본 :