JVM 이 가지고 있는 stack 에 대해 알아보자. 자세하고 세부적인 설명은 ref. 2 를 추천한다.
JVM runtime data areas
출처 : http://www.artima.com/insidejvm/ed2/jvm2.html |
위의 그림 중, runtime data areas 가 JVM 이 bytecode 를 실행(execute) 시키면서 필요한 data 를 저장하는 memory 가 필요하다. 그 memory 구성에 대한 그림이다.
그림에서 보듯이 JVM 에서는 memory 를 5부분으로 구분한다.
- method area : 1개/application --> thread 사이에서 공유됨
- heap : 1개/application --> thread 사이에서 공유됨
- java stacks : 1개/thread
- pc registers : 1개/thread
- native method stacks : 이 녀석은 이 포스트에서 언급하지 않겠다.
java stack
이중에서 java stack 을 좀 더 들여다 보도록 하자.java stack 은 여러 개의 stack frame 을 만들게 되는데, 이 stack frame 은 method 가 호출될 때마다 만들어진다.[ref. 3]
stack frame
하나의 stack frame 은- local variable section(var register) : local variable(method 의 parameter 포함)
- operand stack(optop register) : operand 를 저장
- frame data(frame register) : constanct pool resolution, 정상, 비정상적인 method 종료에 필요한 data
부분으로 나눠진다.(그림)
registers
thread 는 4개의 register 를 가지는데,- program counter register : 다음 실행할 instruction 이 있는 메모리번지를 갖는다.
- var : local variable section 를 가리킨다.
- optop : operanc stack 를 가리킨다.
- frame : frame data 를 가리킨다.
댓글 없음:
댓글 쓰기