Java의 변수
Class 변수
- class가 메모리에 올라갈 때 생성 → 딱 한번만 생성됨, 인스턴스 생성 안해도 접근 가능.
- instance변수에 static을 붙인 것.
instance 변수
- instance가 생성될 때 (new / compiletime)
local 변수
위 3가지 변수가 올라가는 메모리 영역
Class변수 → Method area
- 이 영역에서 생성되는 변수는 프로그램이 종료될 때 까지 할당된 메모리를 점유한다.
- 이 때문에 메모리의 비효율성을 발생시킨다.
- Android 에서 static 남발하면 메모리 누수가 발생.
instance변수 → Heap
- 지역변수는 초기화가 자동적으로 이루어지지 않는다.
local 변수 → Stack
Static의 의미
- static은 고정적인, 공통의 라는 의미.
- java에서 static이라 선언되면, class변수 혹은 method로 사용되어짐.
- C나 C++에서는 static이라 선언되면, 해당 source코드 안에서만 사용될 수 있는 변수.
- 메모리에서 가장 먼저 실행됨.