Stack

    Java의 변수와 메모리 영역

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

    Heap 메모리 vs Stack 메모리

    Heap 메모리 vs Stack 메모리 Stack 메소드 호출시에 처리되는 매개변수, local변수 등이 저장되며, Stack구조로 되어있다. Heap 배열이 생성되는 공간이며 GC는 Heap 메모리 공간 내에 object 중에 참조값이 없는 object에 대해서 실행하여, heap 메모리 영역을 청소한다. 또한, heap 메모리 영역의 모든 object는 프로세스(application) 내에서 전역적으로 액세스가 가능하며 참조가 가능하다. Method Area Class정보를 처음 메모리 공간에 올릴 때, 초기화되는 대상을 저장하기 위한 메모리공간.(메소드 정보,class type정보 등) class 변수도 함께 저장하는데, 그것은 static variable과 같다.