Static
: 정적인
- Static 멤버변수 (클래스 변수) : 메모리상에 하나만 존재하여 하나의 변수를 모든 객체가 공유한다.
- Static 메소드 : 객체를 생성하지 않고도 메모리에 할당시켜 호출이 가능하다. 메소드 내에서는 멤버변수를 사용할 수 없다.
JAVA 메모리 공간 ( Runtime Data Area)
Method, Heap, Stack, PC Register, Native Method Stack
Static 변수는 Method에 저장된다.
- Method는 클래스 정보, 전역, static 정보등을 저장하는 공간이다.
- JVM이 실행되면서 생성되는 공간이다.
- 모든 스레드에서 정보를 공유한다.
- Heap, Stack 공간과 달리 Garbage Collector가 간섭하지 않는다.
static으로 선언한 변수, 메소드는 프로그램 실행 시에 메모리에 올라가 종료될 때 까지 메모리에 남아 있다.
즉, static의 무분별한 사용은 메모리 공간 낭비를 야기 할 수 있다.