뇌운동일지

[JAVA10] 메모리 운영(Method Area, Heap, Stack), garbage collection 본문

JAVA

[JAVA10] 메모리 운영(Method Area, Heap, Stack), garbage collection

purpleduck 2020. 3. 17. 09:57

Method Area ( Class Area )

cs : 소스가 로드되는 영역 

ds : 상수가 저장되는 영역 ( 변화가 없는 것들이 저장되는 영역 ) 

    상수 - 기본값이 있는 상수 

           - 기본값이 없는 상수 

    static - 변수, 메소드 

- 로드 시 바로 메모리 할당( = 인스턴스 생성 불필요 ), 실행속도 빠름 

- 1회만 생성, 모든 인스턴스가 같이 사용 ( 공유변수 ) 

- 클래스 변수 ( static keyword가 붙은 변수 ) 

 

static 변수 

1. 한번만 만들어짐 

2. 실행속도 빠름 

 

static -> 프로그램 종료시까지 살아있음 

 

Heap ( 객체영역 - 멤버변수, 멤버메소드 ) 

: 멤버변수, 지속성, gc로 메모리 수거 

garbage collection : 사용되지 않는 heap영역의 memory를 자동으로 수거하는 기능 

 

Stack ( 메소드 실행영역 ) 

: 지역변수, LIFO(메모리 자동 반환) 

 

메소드 실행은 stack에서, data는 heap에 저장 

 

* stack과 heap의 차이에 대한 참고자료 

https://microcontrollerslab.com/difference-between-stack-and-heap/

 

Difference between stack and heap | Microcontrollers Lab

Difference between stack and heap Embedded Systems | Microcontrollers Lab

microcontrollerslab.com

 

garbage collection

1. 참조되지 않는 heap영역의 메모리를 JVM이 자동으로 수거하는 기능 

2. gc는 우선순위가 낮으며 주로 모든 스레스 실행이 끝나고 여유가 생기면 실행된다 

3. 강제수거는 비권장이며 자동으로 수거하는 것이 바람직하다 

 

System.gc( ) : 강제수거 명령 

C에서는 new로 할당 delete로 반환 

Comments