일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정보처리기사 실기
- 정보보안기사 실기
- PWN
- hacking
- system hacking
- Buffer Overflow
- BOF
- Spring MVC
- Spring
- SQL
- Spring Framework
- 운영체제
- 웹해킹
- 워게임
- Operating System
- OS
- webhacking.kr
- 정보보안기사
- Shell code
- 해킹
- wargame
- webhacking
- Payload
- System
- LOB
- 네트워크
- Pwnable.kr
- pwnable
- Lord of BOF
- stack overflow
- Today
- Total
DongDD's IT
Garbage Collection - Garabge, Garbage collection, 정의, 알고리즘 본문
Garbage Collection
Garbage
Definition
- 특정 메모리 영역을 사용하고 이후에 사용하지 않는데도 지속적으로 해당 영역에 남아 있어 메모리 낭비
Effect
1. Dangling Pointer
- 메모리를 사용 후 직접적으로 free를 해주어야 하기 때문에 garbage collection을 사용하지 않으면 사용되지 않는 메모리 영역이 생길 수 있음
2. Double Free
- 메모리를 사용 후 직접적으로 free 해주어야 하기 때문에 garbage collection을 이용하지 않으면 한 영역을 두번 free하는 경우가 생길 수 있음
3. Memory Leak
- 사용되지 않는 메모리때문에 메모리 누수가 일어날 수 있음
Garbage Collection
Definition
- Garbage들을 회수하여 메모리 낭비를 없앰
Language
1. C/C++
- Garbage Collection이 언어 자체에 포함되어 있지 않아 직접 구현해야함
- 사용자가 직접 메모리를 할당하고 해제할 수 있어, 메모리 사용 후 직접 free해주지 않으면 garbage 발생
- Library를 사용하여 Garbage Collection 사용 가능
2. Java, C#, Python
- Garbage Collection이 구현되어 있음
- 동적으로 할당한 메모리 영역을 완벽하게 관리할 필요가 없음
구현 기법(알고리즘)
1. Mark and Sweep
- 할당된 메모리 영역 중 1비트를 mark bit로 사용
- 일정 시간에 garbage collection이 수행되며 접근 가능한 메모리의 mark bit를 확인하여 mark bit가 활성화되지 않은 영역은 swepp(해제)
- garbage collection이 수행되는 도중 메모리가 변경되면 마킹을 다시해야하기 때문에 garbage collection 수행 시 정지(stop-the-world)
ref) stop-the-world : garbage collection을 수행하기 위해 Application을 중지
2. Copying GC
- 동적 메모리가 할당되는 heap 영역을 active와 inactive 영역으로 나누고 active 영역에만 메모리 할당이 이루어지도록 함
- active 영역이 full이 되면 garbage collection을 수행
3. Generational GC
- 동적 메모리가 할당되는 heap 영역을 young, old와 같은 generation으로 나누고 각 generation은 sub heap을 가지고 있는 형태
- 각 generation별로 효율적인 알고리즘 적용 가능
'기타' 카테고리의 다른 글
[Git] Git 설정, commit 내역 변경하기 (0) | 2019.03.30 |
---|---|
[TDD] Test code 접근 방식, Mock, Mockito, BDD (0) | 2019.03.20 |
[webhacking.kr] 가입 (0) | 2017.09.03 |
Browser에서 POST 방식 전송 (2) | 2017.08.31 |