티스토리 뷰

Java Method를 Call할 때 Thread의 Java Stack에 새로운 Stack Frame을 생성하여 Push하는 것처럼 Native Method를 Call하게 되면 Java Stack에서 Native Method Stack영역으로 나와서 직접 Native Method를 수행

이는 Java Stack에서 Dynamic Link를 통해 Native 까지 확장하는 것으로 볼 수 있음. 만약 JNI를 사용하고 있고 이것이 C로 구현이 되어 있다면 Native Stack은 C Stack으로 생성되고 마치 Native Code처럼 Stack Operation을 수행하게됨

Native Method의 수행이 끝나면 Natve Method Stack에서 나와 다시 Java Stack에 새로운 Stack Frame을 생성하여 들어가게 됨

Native Method Stack은 Fixed Size일 필요는 없고 Application에 따라 확장과 축소가 가능하다.



그러나 1.3 버전 이후에 JVM 벤더들은 Java Stack과 Native Method Stack을 굳이 구분하지 않는다. 좀더 정확하게 표현하면 모두 Native Stack으로 통합이 되어 있다. 이것은 java의 Thread가 모두 Native Thread인 것과 관계가 깊다. Java 초기의 Java Thread(Green Thread)는 성능상의 문제로 폐기되고 1.3버전 부터는 Native Thread로 넘어오게 된 것이다.
저작자 표시 비영리 변경 금지
신고
댓글
댓글쓰기 폼