티스토리 뷰

JAVA 메모리 영역

 

 JVM 실행 순서

  1. .java 파일을 컴파일러(Compiler)를 통해 .class 파일로 변환한다.
  2. .class 파일을 JVM 의 ClassLoader(클래스로더)에게 보낸다.
  3. 클래스로더에서 JVM 런타임 영역으로 로딩(할당)하여 메모리에 올린다. 

JAVA의 메모리 영역

자바 프로그램을 실행하게 되면 JVM은 OS로 부터 메모리를 할당받는다. 할당 받은 메모리를 자바 프로그램에 맞게 여러개의 영역으로 나누어 사용하게된다.

 

각 영역은 목적에 맞게 사용되고, 어플리케이션의 성능에 영향을 미친다. 같은 기능을 하는 어플리케이션 일지라도, 메모리 관리에 따라 성능이 차이가 생긴다. 메모리를 관리하지 않고 구성하게 된다면 StackOverFlow가 발생하여 어플리케이션이 종료되거나 속도가 크게 저하될 수 있다.

 

JVM의 메모리는 크게 3가지로 이루어져있다.

1. Method(Static)영역

2. Heap영역 

3. Stack영역


 

1. Method 영역

1. JVM이 실행될 때 Class 가 로딩될 때 생성.

2. Class의 정보, Static 변수(클래스 변수), 생성자(Constructor), 메소드(Method)와 같은 것들을 저장한다.

3. Static 영역에 있는 것은 어디서나 접근 가능하다. (전역변수)

4. JVM이 종료 시(프로그램 종료 시 ) 메모리에서 해제된다. 프로그램이 종료되기 전까지 메모리 상에 존재한다.

 

2. Heap 영역

인스턴스를 생성할 때 사용되는 메모리 영역이다.

- new 키워드로 인스턴스를 생성할 때, Heap 영역에는 생성된 객체가 저장, Stack 영역에서 생성된

객체에 대한 주소 값(Reference)가 저장된다.

 

1. new를 사용해 객체를 생성할 때 저장된다.

2. 참조형 데이터 타입이 저장된다. (String, array, enum, class, interface) , Object

3. Heap  영역의 데이터들을 가르키는 Reference(참조 주소)는 Stack영역에 적재된다.

4. 호출이 종료되도 삭제되지 않는다. GC에 의해 메모리에서 해제된다.

 

 

"bird" 는 Heap 영역에 저장.

a는 Stack 영역에 저장한다. a는 "bird"의 주소를 가지고 있다. 

 

3. Stack 영역

1. 기본 자료형, 지역변수, 매개변수가 저장되는 메모리.

2. Heap 영역에 생성된 데이터의 참조값이 할당됨

3. 메소드가 호출될 때 메모리에 할당, 메서드 종료시 메모리에 삭제됨.

4. 자료구조 Stack의 구조이다. LIFO(Last In First Out)

 

 

'CS > JAVA' 카테고리의 다른 글

배열 [JAVA]  (0) 2024.10.20
클래스(Class)와 객체(Object)  (0) 2024.08.02
컴파일(Compiled)와 인터프리터(interpreter) 차이  (0) 2024.05.23
[JAVA] JVM이란? (JDK, JRE, 가비지 콜렉터 )  (0) 2024.05.23
자바의 특징  (0) 2024.05.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함