✶Language/Java

[JAVA] 자바 메모리 구조

soonybutter 2024. 8. 28. 00:04
728x90

 

 

자바 메모리 구조

 

자바의 메모리 구조는 메서드 영역, 스택 영역, 힙 영역 으로 나눌 수 있다.

 

자바에서 어떤 동작을 하냐에 따라 각각의 메모리가 저장하는 요소가 다른데, 간단히 정리해보자! 

 

 

  • 메서드 영역(Method Area)
  • 클래스 정보를 저장한다. (클래스가 실행되는 코드, 필드등 모든 코드가 존재함.)
  • static 변수들을 보관한다.

 

  • 스택 영역(Stack Area)
  • 자바를 실행하면, 하나의 실행 스택이 생성된다.
  • 스택프레임: 지역변수, 중간 연산결과, 메서드 호출결과등을 포함한다.
  • 메서드를 호출할때마다 하나의 스택 프레임이 스택에 쌓이고, 메서드가 종료되면 해당 스택 프레임이 사라진다.

 

  • 힙 영역(Heap Area)
  • 객체(인스턴스), 배열이 생성되는 영역이다.
  • 더이상 참조되지 않는 객체는 자바의 GC(Garbage Collection)에 의해 제거된다.

 


 

 만약, 자바에서 5개의 인스턴스를 생성하면

힙 메모리에 5개의 인스턴스가 생성된다. 각각의 인스턴스는 내부에 변수와 메서드를 가진다.

인스턴스 내부의 변수의 값들은 서로 다를 수 있다. 하지만 메서드는 공통된 코드를 공유한다.

인스턴스 변수에는 메모리가 할당되고, 메서드에 대한 새로운 메모리 할당은 없기때문이다.

메서드는 오로지 메서드 영역에서만 공통으로 관리된다.

 

 

 

 

 

 

 

 

*출처: 김영한 자바

728x90