2014년 4월 1일 화요일

[JAVA강좌]자바 버추얼머신(JVM, Java Virtual Machine)의 실행 메모리 영역, 스택, 힙[자바교육/자바강좌/자바교육잘하는곳/자바교육추천/자바실무교육/JAVA/JAVA교육/JAVA학원/JAVA실무교육]

[JAVA강좌]자바 버추얼머신(JVM, Java Virtual Machine)의 실행 메모리 영역, 스택, 힙[자바교육/자바강좌/자바교육잘하는곳/자바교육추천/자바실무교육/JAVA/JAVA교육/JAVA학원/JAVA실무교육]
 
자바 애플리케이션을 만들 때 메모리나 어드레스 같은 낮은 수준의 사항을 너무 의식하면 안되지만
자바를 확실하게 이해하기위해선 기본적인 메모리의 사용법을 어느 정도 이해하는 것이 좋다.

1. 메쏘드(method) 영역
 
공유메모리 영역으로 클래스의 메소드에 대한 바이트코드, 전역변수(클래스 변수, static 변수)가 위치한다.
JVM에서 실행되는 모든 쓰레드에 의해 공유되며, 실행 로직이 메모리에 적재 되야 cpu가 fetch할 수 있음
자바의 모든 로직은 메서드에만 존재
메서드에 대한 바이트코드도 static 필드와 마찬가지로 클래스가 참도되는 시점에 메모리에 적재된다.
프로그램이 실행되기 시작되기 시작할 때부터 끝날 때까지 계속 존재.
 
2. 힙(heap) 영역

객체를 저장할때 사용하는 메모리, new 를 이용하여 생성된 객체 저장
배열, 객체, String장(new String)저장
3. 스택(stack) 영역
메소드의 매개변수, 지역변수, 임시변수, 리턴 값 등을 저장하기 위한 공간
메소드 호출과 함께 메모리 공간할당, 메소드 수행을 마짐 때 시스템에 반환, 사라짐
JVM은 스택 영역을 실행중인 스레드에 따라 개별적으로 구성한다.

4. 레지스터(registers)

가상 머신의 현재 상태를 보여줌
현재 실행되고 있는 메소드의 실행 포인터를 저장, JVM의 상태 유지
 
5. 실행 풀(Runtime Constant Pool)

심볼테이블, 숫자 리터럴과 상수 필드 포함
메소드 영역으로 부터 할당 받는다.

댓글 없음:

댓글 쓰기