[Java]남들 다 아는 자바 가비지 컬렉션(garbage collection, GC)

Taeho-Park·2022년 9월 28일
0

반갑습니다. 태호쿤입니다.

자바 시리즈 첫 기고글로 가비지 컬렉션을 고르게 되었습니다.

가비지 컬렉션은 자바를 쓰는 이유 중 하나라고 생각하기에 자바를 나타내는 핵심이라고도 생각합니다.

이번 글에선 간단하게 가비지 컬렉션에 대해 집고 넘어가겠습니다.

흔히 자바의 특성에 대해 얘기하면 학부 때 배우는

  1. JVM을 통한 플랫폼 독립성

  2. 완벽한 객체지향

  3. 캡슐화

  4. .java 파일과 .class 파일

  5. 패키지 및 배포

  6. 멀티스레드....

등등 배우실 겁니다.

그 중 가비지 컬렉션도 배울텐데 교제에선 이렇게 배울겁니다.

  1. 자바는 응용 프로그램에서 메모리 반환 기능이 없다. 오직 메모리 할당 기능(new)만 있다.
  1. 가비지란 할당 후 사용되지 않는 메모리를 말한다.
  1. 자바 가상 기계(JVM)가 자동으로 가비지를 회수 한다.

이로 인한 장점

  • 이는 개발자의 부담이 대폭 감소한다.

개발자가 신경쓰지 않아도 할당된 메모리를 알아서 회수하기에 프로그래밍에 집중 가능

이로 인한 단점

  • 실시간 응용 시스템에 부적합하다.

자바 응용 프로그램 실행 도중 예측할 수 없는 시점에서 가비지 컬렉션이 실행된다.
이는 데드라인 내에 반드시 결과를 내야하는 리얼타임 시스템엔 부적합하다.
항공, 우주, 군사 분야에선 COBOL 언어를 주로 씁니다.(우리나라에 경우 K-9 자주포가 대표적)

발생사례

Person a, b;
a = new Person("이몽룡");
b = new Person("성춘향");
b = a; // 이 시점 b가 가리키던 객체는 가비지가 된다.

위 내용까지가 학부에서 집고 넘어가는 내용입니다.

이후 교수님의 재량으로 추가적인 부분을 집고 넘어가실텐데

아래에 대한 내용을 공부하실 겁니다.

  1. 가비지 컬렉션을 C++처럼 메소드를 통해 원하는 시점에 작동하도록할 수 있는가?

  2. 가비지 컬렉션을 내부적으로 어떻게 구현했길래 가능한 걸까?

바로 다음 글은 [너만 모르는 가비지 컬렉션]으로 넘어가겠습니다.

profile
태호입니다.

0개의 댓글

관련 채용 정보