공부/JAVA

[JAVA] JVM 공부

JangGiraffe 2016. 4. 5. 09:54

 

.java 파일 - ( javac.. javacompiler) ->java bytecode.. .class파일 -> [jvm] ->OS

 

[runtime data areas] .. jvm이 운영체제 위에서 실행되면서  OS에게 할당받는 메모리 영역

크게 2가지로 나뉘는데 1: 스레드마다 생성되는 부분 // 2:공용으로 사용되는 부분

(stack,heap,method area 이 3가지가 중요한듯)

1: 스레드마다 생성되는 부분 ( 스레드마다 하나씩 존재함)

- pc register : 현재 수행중인 JVM 명령의 주소를 갖는다.

- JVM Stack : 스택        /지역변수, 매개변수등을 저장함.. 맨밑바닥에 main을 깔고 시작

- Native method : 자바외에 언어로 작성된 네이티브 코드를 위한 공간

 

2: 공용으로 사용되는 부분

- Heap : 인스턴스 객체가 저장되는 공간 가비지 컬렉션 대상.   /전역변수,new 키워드를 통해 생성한 객체 등..

-method area(class area, code area, static area라고도 불림) : jvm이 시작될 때 생성됨.....     static ,필드, 바이트코드,상수풀 등을 보관함.

 

 

---------------------------------------------------------------------------------------------------

*상수풀 heap의 고정영역 (permanent area)에 생성됨. java 종료시까지 유지. String을 리터럴 형태로 저장시 여기에 저장함. 그외에 모든 상수를 저장함.

그리고 method area에 저장되는데 이거를 heap영역에서 저장하는거인듯?

---------------------------------------------------------------------------------------------------

stack영역 ->primitive data type을 저장

heap영역 -> reference data type을 저장

----------------------------------------------------------------------------------------------------

반응형