> For the complete documentation index, see [llms.txt](https://seokrae.gitbook.io/sr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://seokrae.gitbook.io/sr/book/effective/item_7_ppt.md).

# Item 7 발표 내용

![메모리 관리](/files/-Mbf3RMG8l24lGwxW6lG)

## Intro

* 프로그래밍을 하는 동안 메모리를 할당하고 사용하게 되는데 이와 관련된 키워드를 학습하기
* 학습 키워드
  * 메모리 누수로 인한 장애의 징조
  * 메모리의 구조
  * Garbage Collection
  * 메모리 누수의 원인
  * 메모리 모니터링

## 참고 내용

![참고 내용](/files/-Mbf2e2OnCzypr4A1XO-)

## 메모리 누수로 인한 장애의 징조

* 어떤 자료구조를 사용하는 프로그램을 오래 실행하다 보면 점차 가비지 컬렉션 활동과 메모리 사용량이 늘어나 결국 성능이 저하될 것이다.
* 성능 저하되는 것을 넘어서 디스크 페이징이나 OutOfMemoryError(OOM)을 일으켜 예기지 않게 종료될 수 있다.

![장애의 징조](/files/-Mbf2e2Po8CTCr4ZCRee)

## Java Virtual Machine

1. Java Source
2. Java Compiler
3. Java Byte Code
4. Class Loader
5. **Runtime Data Area**
6. Garbage Collection
7. Execution Engine

![자바 가상머신 구조](/files/-Mbf2e2Q-XTIAuFvAGX2)

### Runtime Data Area

1. **Method(Static or Class) Area**
   * Runtime Constant Pool
2. **Heap Area**
   * Young Generation
   * Old Generation
   * MetaSpace
3. **Stack Area**
4. **PC Register**
5. **Native Method Stack Area**

![Runtime Data Area](/files/-Mbf2e2RrF759JjqYO-M)

![자원 사용](/files/-Mbf2e2SIkASA2YrNNkU)

## Garbage Collection

### Minor GC

![Minor GC 1](/files/-Mbf2e2TBa0iaBUpFAJ0)

![Minor GC 2](/files/-Mbf2e2Ub_tIWMrwqJ7m)

![Minor GC 3](/files/-Mbf2e2VSOmDFuMsINtI)

![Minor GC 4](/files/-Mbf2e2Whyh7Ciz067h0)

![Minor GC 5](/files/-Mbf2e2XJdlB6VL0q7D3)

### MaxTenuringThreshold

![MaxTenuringThreshold](/files/-Mbf2e2Y1cMwKLbKLIMX)

### Major GC

![Major GC](/files/-Mbf2e2ZcIU_YpO2LDAr)

### Garbage Collection Trigger

![Garbage Collection Trigger](/files/-Mbf2e2_4HZFUKN3jlQ8)

### Garbage Collection 수거 대상

![Garbage Collection 수거 대상](/files/-Mbf2e2atEzQ-GTXTuh2)

## 중간 정리

![중간 정리](/files/-Mbf2e2bdklwtAlajV4h)

## 메모리 누수의 원인

![메모리 누수의 원인](/files/-Mbf2e2cT483couqk20S)

### 1. AutoBoxing

![AutoBoxing](/files/-Mbf2e2dXoiur-DAbWnO)

### 2. Cache

![Cache](/files/-Mbf2e2e7GYmE_kEslYH)

### 3. Connection

![Connection](/files/-Mbf2e2fYoMbxwRxr1f4)

### 4. CustomKey

![CustomKey](/files/-Mbf2e2gQk0W7Ks04L4h)

### 5. Immutable Key

![Immutable Key](/files/-Mbf2e2hJxAmCRxfOjPy)

### 6. Internal Data Structure

![Internal Data Structure](/files/-Mbf2e2iChYak-Oi6KW2)

## 마지막 정리

![정리](/files/-Mbf2e2j2hvAcogsN9px)

## 메모리 모니터링

![메모리 모니터링](/files/-Mbf2e2kzwopKvUCoIxz)
