• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [Java 정리] Garbage Collector 1
        2022년 07월 30일
        • starryeye
        • 작성자
        • 2022.07.30.:06
        반응형

        Java는 개발자가 메모리를 관리할 필요가 없다..

        (C++는 직접 관리 해야함.. 스마트 포인터 생각X)

         

         

        어디서 어떻게 관리 해줄까...

        JVM의 Garbage Collector(GC)에서 메모리를 관리해준다.

        Heap영역에 생성된 메모리 영역 중, 더 이상 참조되지 않는 것들을 정리해준다.

         

         

        간단하게 동작을 알아보자..

        void testMethod() {
            ...
            
            String str = new String("Hello");
            
            ...
        }

        위와 같이, 코드가 작성되어 있다면...

        아래와 같이 메모리가 사용될 것이다..

        그러다가..

        해당 testMethod 로직이 모두 수행되고 리턴될 때, 지역변수인 str은 사라지게 된다.

        그때, 힙 영역의 "Hello"는 도달할 수 없는 객체인 Unreachable Object가 된다.

        GC는 이러한 영역들을 제거하며 관리 해준다.

         

         

        GC에 대해 더 자세하게 알아보자..

        GC는 Mark, Sweep의 과정을 통해 실행된다.

        (참고로 GC는 데몬 쓰레드이다.)

         

        Mark 작업

        스택 영역에 할당된 할당된 모든 변수, Reachable Object들을

        탐색하며 어떤 객체를 참조하고 있는지 Mark하는 작업이다.

        이 작업을 수행할 때는 GC의 스레드 빼고는 모두 중단된다.

        이를 Stop the World라고 부른다.

         

        Sweep 작업

        힙 영역의 객체들 중 Mark 되지 않은 객체를 제거하는 작업이다.

         

         

         

         

        Garbage Collector 2편에서는

        Runtime Data Area와 함께 더욱 자세한 GC 동작원리에 대해 포스팅하겠다..

        (+ 부가적인 참고 내용들)

        반응형

        'Java' 카테고리의 다른 글

        [Java 정리] Thread 1  (0) 2022.08.13
        [Java 정리] String, final, Immutable  (0) 2022.08.05
        [Java 정리] 내부 클래스  (0) 2022.07.28
        [Java 정리] Exception, Error  (0) 2022.07.15
        [Java 정리] Annotation  (0) 2022.04.09
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바