static


OS는 RAM을 static, heap, stack 세 구역으로 나누어 관리한다. Java에서 변수의 종류로 나누어 생각할 때 지역 변수는 stack에, 인스턴스는 heap에, static 키워드로 선언한 정적 멤버 변수는 static 영역에서 관리된다.

흔히 스태틱(Static) 이라고 부르는 이 메모리 영역은 글자 뜻 그대로 '정적 메모리'라는 뜻을 가지고 있습니다. 이는 컴파일 시간 동안 할당 된 메모리이며 고정된 공간을 차지하고 런타임 중에 변경할 수 없는 특징을 가지고 있습니다. 정적 메모리를 잘 사용할 경우 (Singleton 등) 메모리 사용에 있어 이점을 볼 수 있습니다.

지역 변수는 함수에서 호출되어 스택에 올라갈 때 메모리가 할당되고, 인스턴스는 new 키워드를 통해 힙에 메모리를 할당할 때 메모리를 할당받는 반면 static 필드는 JVM 클래스 로더에 의해 .class 파일이 RAM에 로드될 때 static 영역에 메모리를 할당받는다.

static 키워드 활용의 장단점은 다음과 같다.

static의 장단점


장점