static


static은 "정적인" , "고정적인" 이라는 뜻을 가지고 있다.

변수와 메소드의 이름 앞에 static을 붙이면 그것은 정적 변수 또는 정적 메소드가 된다.

 

이렇게 만들어진 정적 변수와 정적 메소드는 객체의 인스턴스에 소속되는 것이 아닌, 클래스에 고정되었다고 할 수 있다.

따라서, 클래스 로더가 클래스를 로딩하여 메모리 영역에 적재할때 클래스별로 관리된다. 그러므로 클래스의 로딩이 끝난 후부터 바로 사용이 가능하다.

 

static 멤버(static 변수 + static 메소드)는 static 메모리에서 별도로 관리되며, 이 메모리는 모든 객체가 공유한다.

이는 객체들이 주로 할당하며 GC(Garbage Collector)가 관리해주는 Heap 메모리와는 다르게, 클래스들이 할당하며, GC(Garbage Collector)가 관리하지 않는다는 특징이 있다.

 

그렇기 때문에, static을 불필요하게 많이 사용할 경우 해당 프로그램이 종료될 때 까지 static 메모리가 그대로 유지되므로 시스템의 성능에 악영향을 줄 수 있으므로  이 부분에 대해서 주의해야 한다. 

 

 

 

 

메모리 측면에서의 이점


static을 붙이게 되면 해당 변수 또는 메소드에 대한 메모리 할당을 한 번만 하게되며, 이는 메모리 사용에 있어서 이점을 가져온다.

 

 

공유 측면에서의 이점


static을 붙이게 되면 해당 변수 또는 메소드는 하나의 주소에 위치하게 되며, 이를 전체에서 공유하게 된다.

+ Recent posts