자바공부하기 64

JVM 메모리 모델

 

메소드 영역(Method area)

- 공유 메모리 영역이라고도 한다.

 

- 클래스의 메소드에 대한 바이트코드, 클래스의 전역변수인 클래스 병수(static)위치

 

- JVM에서 실행되고 있는 모든 스레드에 의해 공유

 

- JVM은 복수개의 스레드가 메소드를 정상적으로 사용하기 위해 동기화(synchronization)기법 제공

 

- static 필드(클래스 변수)

: 각 클래스의 static 필드가 확보

: 사용을 위해 클래스 이름으로 호출 시 메모리에 적재

 

- 바이트 코드(메서드)

: 메서드의 실행 로직에 대한 바이트코드가 메모리로 적재되는 공간

: 실행 로직이 메모리에 적재되야 cpu가 fetch할 수 있음

: 자바의 모든 로직은 메서드에만 존재

* 클래스는 ㅣㄹ드와 메서드로만 구성되어있기 때문

: 메서드에 대한 바이트코드도 static 필드와 마찬가지로 클래스를 객체 생성할 시점에 메모리에 적재(예외: main())

 

- 장점

: 기동시간의 단축

: 끝까지 사용되지 않은 클래스(필드, 메서드)가 있을 경우 메모리를 절약

 

- 메서드 영역은 프로그램이 시행되기 시작되기 시작할 때부터 끝날 때까지 계속 존재하는 것이라고 보면 된다.

 

- 다른 메모리 영역과의 차이

: 스택(Stack)과 같이 필요에 의해 임시적으로 생성되고 사라지지도 않고 힙(Heap)안의 객체와 같이 실행 시 확보되지 않고 계속해서 정적으로 존재

: 또한 스택은 스레드 별로 존재한다.

 

 

 

+ Recent posts