티스토리 뷰
[Garbage Collection(GC) 란?]
프로그램을 개발하다 보면 유효하지 않은 메모리인 가비지(Garbage)가 발생하게 된다. C언어를 이용하면 free()라는 함수를 통해 직접 메모리를 해제해 주어야 한다. 하지만 Java나 Kotlin을 이용해 개발을 하다 보면 개발자가 메모리를 직접 해제해주는 일이 없다. 그 이유는 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문이다. 대신 Java에서 명시적으로 불필요한 데이터를 표현하기 위해서 일반적으로 null을 선언해준다.
예를 들어 아래와 같은 코드가 있다고 가정하자
Person person = new Person();
person.setName("Mang");
person = null;
// 가비지 발생
person = new Person();
person.setName("MangKyu");
//출처: https://mangkyu.tistory.com/118 [MangKyu's Diary]
기존의 Mang으로 생성된 person 객체는 더이상 참조를 하지 않고 사용이 되지 않아서 Garbage(가비지)가 되었다. Java나 Kotlin에서는 이러한 메모리 누수를 방지하기 위해 가비지 컬렉터(Garbage Collector, GC)가 주기적으로 검사하여 메모리를 청소해준다.
(물론 Java에서도 System.gc()를 이용해 호출할 수 있지만, 해당 메소드를 호출하는 것은 시스템의 성능에 매우 큰 영향을 미치므로 절대 호출해서는 안된다.)
[Minor GC와 Major GC]
객체는 대부분 일회성이며, 메모리에 오랫동안 남아있는 경우는 드물다. 그렇게 때문에 객체의 생존 기간에 따라 물리적인 Heap 영역을 나누게 되었는데, 이에 따라 Young, Old 총 2가지 영역으로 설계되었다.
[Reference]
'Study > Java' 카테고리의 다른 글
[스터디 4주차] 선택문/반복문 (0) | 2022.01.02 |
---|---|
[스터디 3주차] 연산자 (0) | 2021.12.19 |
[스터디 2주차] 데이터 타입(Primitive type, Reference type) (0) | 2021.12.12 |
[스터디 1주차] 컴파일 하는 방법 (0) | 2021.12.12 |
[스터디 1주차] JVM(Java Virtual Machine) (0) | 2021.12.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- CS
- 연결리스트활용
- 리스트 복사
- CS 스터디
- https
- 이진탐색
- 자료구조
- 알고리즘
- 프로그래머스
- 자료구조와알고리즘 23강
- 리스트함축
- 파이썬
- CS.
- 코드업 기초
- 완전탐색
- 네트워크
- 이차 리스트
- 보험
- 자바
- 스터디
- 정렬
- 리스트
- 리스트2
- 프로세스 주소공간
- SW
- It
- 프로그래머스강의
- Greedy sort
- 데이터베이스
- 운영체제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함