JVM 쓰레기 회수 에 어떤 상용 알고리즘 이 있 는 지 간단히 말 하 다

2680 단어 JVM쓰레기 수 거
1.머리말:
쓰레기 수 거:
앞으로 의 JDK 에 서 는 G1 이 ZGC 로 대 체 될 수 있 습 니 다.
먼저 자신 에 게 몇 가지 질문 을 한다.
쓰레기 란 무엇 인가?
  • 쓰레기 는 메모리 에 포인터 가 가리 키 지 않 는 대상 실체 이다.접근 성 이 없다.
  • 쓰레기 를 왜 회수 합 니까?
  • 우리 의 메모리 가 유한 하기 때문에 메모리 가 장시간 정리 되 지 않 으 면 메모리 가 넘 칠 수 있 습 니 다.OOM;
  • 프로그램 이 달리 고 있 는 한 새로운 대상 이 계속 생 성 되 고 우 리 는 GC 가 새로운 공간 을 열 어 새로운 대상 에 게 분배 해 야 한다.
  • 우 리 는 쓰레기 를 어떻게 회수 합 니까?
  • 은 자바 의 자동 메모리 회수 메커니즘 에 의존 하고 메커니즘 의 우열 은 알고리즘 에 의 해 결정 된다.
  • 또는 메커니즘 의 적당 도 는 알고리즘 과 응용 장면 이 공동으로 결정 한다.
  • 쓰레기 는 언제 회수 합 니까?
  • 더미 속 의 실체 대상 이 아무런 지침 도 가리 키 지 않 을 때
  • 2.GC 의 태그 단계 알고리즘:
    표식&제거
    1.인용 계수(참조 계수):
    자바 는 이 알고리즘 에 필요 한 추가 처리 가 너무 많 기 때문에 이러한 알고리즘 을 배제 했다.
    [우]효율 이 높 고 python 도 사용 하고 있 습 니 다.논문 의 인용 인자 처럼 쓸모없는 글 은 많이 회수 하고 학술 쓰레기 를 치 워 야 합 니 다.
    [부족]대상 의 상호'순환 인용'을 처리 할 수 없고 인용 고리 가 형성 되면 해결 할 방법 이 없다.메모리 유출 로 이 어 진다.
    2.접근 성 분석⭐(루트 검색,추적 차고 컬 렉 션):
    GC Roots=시작 노드 집합,GC Roots 부터 아래로 검색,연결 경 로 는 참조 체인,GC Roots 가 도달 할 수 없 는 대상 은 사용 불가 판정 을 받 았 습 니 다.
    어떤 게 GC Roots 예요?
  • 가상 스 택 프레임 의 부분 변수 표 참조 대상;
  • 방법 구역 상수 참조
  • 방법 구역 에서 정적 변수
  • 동기 잠 금 수식 대상
  • 더미 구역 을 제외 하고 더미 와 관련 된 것 은 모두 시작 노드 입 니 다.
  • [우]순환 인용의 단점 을 해결 했다.
    [부족]옮 겨 다 녀 야 돼 요.
    3.쓰레기 수집 알고리즘:
    태그 지우 기 알고리즘
    복제 알고리즘
    태그 지우 기 정리 알고리즘
    태그-지우 기 알고리즘:
    먼저 mark 가 대상 에 도달 하고 루트 노드 부터 선형 으로 옮 겨 다 닙 니 다.
    [우]고 르 네.
    【결】효율 이 높 지 않 습 니 다.GC 일 때 STW 가 발생 합 니 다.알 고 나 면 메모리 조각 이 존재 합 니 다(남 은 목록 이 존재 합 니 다)
    이것 은 가장 빠 른 제거 알고리즘 이다.
    복제 알고리즘
    먼저 공간 을 두 부분 으로 나 누 어 표 시 된 대상 을 다른 공간 으로 정연 하 게 옮 깁 니 다(바늘 이 부 딪 히 는 방식).
    【우】효율 적 이 고 mark/sweep 가 필요 없습니다.메모리 조각 없 음;
    [결원]많은 공간 을 희생 했 습 니 다."다 쓰레기 였 으 면 좋 겠 어 요!"
    태그-지우 기-정리 알고리즘
    태그 후 지우 고 정리 합 니 다.태그 제거 알고리즘 최적화 판 에 속 합 니 다.남 은 목록 이 없습니다.
    【우】빈 목록 이 없고 메모리 조각 이 없습니다.공간 비용 이 낮다.
    [부족]시간 이 느 려 서 여러 번 조작 해 야 합 니 다.
    4.finalize&메모리 분석 도구
    finalization―면사 금메달
    finalize 는 GC 호출 입 니 다.
    [Q]회수 할 때 어떤 조작 이 걸 리 나 요?어떤 상태 가 수반 되 나 요?
  • 접촉 가능:정상 상태,GC Roots 의 인용 체인 에서;
  • 부활 가능:finalize 방법 을 다시 써 야 합 니 다."황제 가 하사 한 finalize 방법"
  • 건 드 리 면 안 됩 니 다.finalize 면사 금메달 은 한 번 만 사용 할 수 있 습 니 다.다시 쓰 는 finalize 방법 이 없 으 면 바로 끊 습 니 다.
  • MAT & GC Roots:
    메모리 분석 기 도구 메모리 분석 도구
    dump 파일 분석:GC Roots 에 따라 소스 추적,메모리 누 출 감시→JProfiler
    파 티 션 알고리즘
    쌓 인 공간 을 작은 공간 으로 나 누 는 것 은 정지 시간 을 낮 추고 지연 을 낮 추기 위해 서다.
    실제 사용 은 모두 복합 알고리즘 이다.
    String
    final 은 죽은 것 이 고 계승 할 수도 없고 수정 할 수도 없다.
    Serializable 수식 은 크로스 프로 세 스 입 니 다.
    Comparable 비교 가능
    JVM 쓰레기 수 거 에 대해 자주 사용 되 는 알고리즘 이 있 는 지 에 대한 글 은 여기까지 입 니 다.더 많은 JVM 쓰레기 수 거 알고리즘 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기