Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- KebabCase
- DatagramSocket
- UDP통신
- udp
- 명명규칙
- tcp
- 파스칼케이스
- SnakeCase
- 카멜케이스
- camelcase
- DatagramPacket
- Socket
- PascalCase
- Java
- 스네이크케이스
- 케밥케이스
- ServerSocket
- NamingRule
Archives
- Today
- Total
MATT's
JVM과 Garbage Collector 본문
<JVM>
- 운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램
- 메모리 관리, Garbage Collect 수행
<Garbage Collector>
- 동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하는 기능
<Stack>
- 정적으로 할당한 메모리 영역
- 원시 타입의 데이터가 값과 함께 할당
- Heap 영역에 생성된 Object 타입의 데이터의 참조 값 할당
<Heap>
- 동적으로 할당한 메모리 영역
- Object 타입의 데이터가 할당됨
- Heap 영역의 Object를 가리키는 참조 변수가 Stack에 할당
<Garbage Collection 과정>
- Garbage collector가 stack의 모든 변수를 스캔하면서 각각 어떤 객체(Object)를 참조하고 있는지 마킹
- Reachable Object가 참조하는 객체도 마킹
- 마킹되지 않은 객체를 Heap에서 제거 (Sweep)
* 이러한 과정을 Mark and Sweep이라고 함
<Garbage Collection이 발생하는 시점>
- Heap은 “New Generation”, “Old Generation” 영역으로 나뉨
- “New Generation”은 Eden, Survival0, Survival1으로 나뉨
- 새로운 객체가 생성되면 eden에 저장되고, eden 영역이 가득차게 되면 Garbage collection이 발생됨 (이 때 발생되는 Garbage collection을 Minor GC라고 함)
- Eden 영역에서 GC 이후에 Reachable 객체는 Survival0으로 옮겨지고, UnReachable 객체는 메모리에서 해제된다.
- Survival0 영역이 가득차게 되면 GC가 발생되고, Survival0 영역에서 살아남은 객체는 Survival1영역으로 이동 후 Age 값이 증가되게 된다.
- Survival1 영역이 가득차게되면 GC가 발생되고, 살아남은 객체는 다시 Survival 0으로 이동하게 된다.
- Age 값이 특정 값을 넘어가게 되면 Old Generation 영역으로 옮겨진다. 이 과정을 Promotion이라 한다.
- Old Generation 영역이 가득차게 되면 GC가 발생되고 이때 발생되는 GC를 Major GC라고 한다.
'CS' 카테고리의 다른 글
Process와 Thread (0) | 2022.11.02 |
---|