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
- 프로그래머스
- mariadb
- ssh
- Git
- db
- Java
- spring boot
- 코딩테스트
- DISTINCT
- WebHook
- EC2
- github
- TLS
- jdbc
- spring
- Client
- window
- sample
- centos7
- AWS
- TypeScript
- Jenkins
- SSL
- Spring Legacy Project
- Hibernate
- Linux
- 토비의스프링
- 책 정리
- vagrant
- docker
Archives
- Today
- Total
Woopii Vyeolog
garbage collecter 본문
Garbage Collector(GC)
메모리 관리 기법 중 하나
프로그램이 동적으로 할당했던 메모리 영역 중에서, 필요없게 된 영역을 해제하는 기능이다.
쓰레기 수집은 동적 할당 된 메모리 영역 가운데, 더 이상 사용할 수 없게 된 영역을 탐지하여 자동으로 해제하는
기법이다.
더 이상 사용할 수 없게 된 영역이란, 어떤 변수도 가리키지 않게 된 영역을 의미한다.
장단점
아래와 같은 버그를 줄이거나 완전히 막을 수 있다.
- 유효하지 않은 포인터 접근 : 이미 해제된 메모리에 접근하는 버그
- 이중 해제 : 이미 해제된 메모리를 또다시 해제하는 버그
- 메모리 누수 : 더이상 필요하지 않은 메모리가 해제되지 않고 남아있는 버그
하지만 아래와 같은 단점이 있다.
- 어떤 메모리를 해제할지 결정하는 데 비용이 든다. 객체가 필요없어지는 시점을 프로그래머가 미리 알고 있는 경우에도 쓰레기 수집 알고리즘이 메모리 해제 시점을 추적해야 하므로, 이 작업은 오버헤드가 된다.
- 쓰레기 수집이 일어나는 타이밍이나 점유 시간을 미리 예측하기 어렵다. 때문에 프로그램이 예측 불가능하게 일시적으로 정지할 수 있다. 이런 특성은 특히 실시간 시스템에는 적합하지 않다.
- 할당된 메모리가 해제되는 시점을 알 수 없다. 자원 할당과 변수 초기화를 일치하는 RAII(Resource Acquisition is Initialization) 스타일의 프로그래밍에서는, 이것은 자원 해제 시점을 알 수 없다는 것을 의미한다.
참고
'java' 카테고리의 다른 글
[Java] Socket 통신, Tcp Server 샘플 (0) | 2022.04.02 |
---|---|
[디자인 패턴] Build Pattern, 빌더 패턴 (1) | 2021.02.24 |
Vector vs Arraylist (0) | 2020.02.28 |
String, StringBuffer, StringBuilder (0) | 2020.02.19 |
JAVA에서의 메모리 관리 (Heap, Stack, Static ) (0) | 2020.02.14 |
Comments