자바 에서 gc 알고리즘 인 스 턴 스 용법

2661 단어 자바gc 알고리즘
우리 가 gc 중의 알고리즘 에 대해 기본 적 인 개념 을 이해 한 후에 알고리즘 의 이념 을 실현 하려 면 실제 쓰레기 수집 기의 사용 에 의존 해 야 한다.간단 한 원리 만으로 전체 프로그램의 운행 을 지탱 할 수 없 기 때문에 회수 메커니즘 에 전문 적 인 수집 기 가 있다.다음은 쓰레기 수집 기의 개념,사용 주의사항,수집 기 도해 에 대해 소개 한 다음 에 흔히 볼 수 있 는 쓰레기 수집 기 두 가 지 를 가 져 와 참고 하도록 하 겠 습 니 다.
1.개념
쓰레기 수집 기 에 앞서 열거 한 쓰레기 수집 알고리즘 의 구체 적 인 실현
2.주의사항
모든 수 거 기 는 Stop The World 의 문제 가 존재 합 니 다.다만 각 수 거 기 는 Stop The World 시간 에 최적화 정도,알고리즘 에 따라 자신의 수요 에 따라 적합 한 수 거 기 를 선택 할 수 있 습 니 다.
3.쓰레기 수집 기 도해

위의 그림 은 전형 적 인 몇 개의 쓰레기 수집 기 로 위 는 신세대 에 속 하고 아래 는 옛날 에 속 하 며 그 중에서 G1 의 메모리 구분 은 신세대 와 옛날 에 따라 구분 되 는 것 이 아니다.
두 가지 중요 한 개념:
병행:쓰레기 수집 기 는 여러 개의 쓰레기 수집 라인 을 열 어 표시,청소 등 처 리 를 병행 할 수 있다.
동시 다발:쓰레기 수집 기의 태그,청소 스 레 드 와 사용자 스 레 드 가 동시에 실 행 됩 니 다.
4.흔 한 쓰레기 수집 기
(1)시리 얼 수집 기
Serial 수집 기 는 신세대 에 작용 하고 단일 라인 수집 기로 복제 알고리즘 을 바탕 으로 이 루어 진다.쓰레기 수 거 를 할 때 단일 스 레 드 만 사용 하고 수 거 하 는 과정 에서 모든 사용자 스 레 드(Stop The World)가 걸 립 니 다.시리 얼 수집 기 는 JVM client 모드 에서 기본 적 인 신세대 수집 기 입 니 다.
(2)ParNew 수집 기
신세대 수집 기,Serial 의 다 중 스 레 드 병행 버 전,행 위 는 Serial 과 일치 하 며,동시에 여러 개의 쓰레기 수집 스 레 드 를 사용 하여 쓰레기 수집 을 진행 합 니 다.
특징:시리 얼 수집 기 를 제외 하고 CMS 수집 기 와 함께 작업 할 수 있 습 니 다.
지식 포인트 확장:
인용 계수 법 Reference Counting
대상 에 게 인용 계수 기 를 추가 합 니 다.인용 카운터 값 이 지나 면+1 이 고 인용 이 적 으 면-1 입 니 다.인용 이 0 으로 바 뀌 었 을 때 이 대상 은 더 이상 사용 할 수 없습니다.그것 의 실현 은 간단 하지만 서로 순환 적 으로 인용 하 는 문 제 는 해결 할 수 없다.
루트 검색 알고리즘 GC 루트 추적
일련의'GC Roots'라 는 대상 을 기점 으로 아래 검색 을 시작 합 니 다.지나 가 는 경 로 를 인용 체인(Reference Chain)이 라 고 합 니 다.한 대상 이 어떠한 인용 체인 과 연결 되 지 않 았 을 때 이 대상 이 사용 할 수 없고 그림 이론 으로 는 불가능 하 다 는 것 을 증명 합 니 다.그러면 회수 가능 한 대상 으로 판 정 될 겁 니 다.
JAVA 에 서 는 GC Roots 의 대상 이 될 수 있 습 니 다.
가상 스 택(스 택 프레임 의 로 컬 변수 표)에서 참조 한 대상
방법 영역의 클래스 정적 속성 참조 대상
방법 영역 에서 상수 참조 대상
로 컬 방법 스 택 의 JNI(즉 Native 방법)참조 대상
태그-제거 알고리즘 Mark-Sweet
이것 은 매우 기본 적 인 GC 알고리즘 으로 현대 GC 알고리즘 의 사상 적 기반 으로 태그 와 제거 두 단계 로 나 뉜 다.먼저 모든 활동 대상 을 표시 한 다음 에 표시 되 지 않 은 대상 을 통일 적 으로 제거 하 는 것 이다.그러나 두 가지 문제 가 있다.하 나 는 효율 문제 이 고 두 과정의 효율 이 높 지 않다.둘째,공간 문제 입 니 다.제거 한 후에 대량의 불 연속 메모리 가 발생 합 니 다.
복제 알고리즘 복사
복사 알고리즘 은 기 존의 메모리 공간 을 두 조각 으로 나 누 어 매번 한 조각 만 사용 합 니 다.GC 에 서 는 사용 중인 메모리 블록 에 있 는 생존 대상 을 사용 하지 않 은 블록 으로 복사 한 다음 사용 중인 메모리 블록 에 있 는 모든 대상 을 제거 하고 두 개의 메모리 역할 을 교환 하여 쓰레기 수 거 를 완료 합 니 다.태그-제거 알고리즘 보다 효율 적 이지 만 생존 대상 이 많은 메모리 에는 적용 되 지 않 습 니 다.복사 할 때 시간 이 많이 소모 되 기 때 문 입 니 다.그것 의 치 명 적 인 단점 은 메모리 의 절반 이 낭비 된다 는 것 이다.
태그 정리 알고리즘 Mark-Compact
태그 정리 알고리즘 은 생존 대상 이 많은 경우 에 적용 되 며,태그 단계 와 태그-제거 알고리즘 과 같 습 니 다.정리 단 계 는 살아 있 는 모든 대상 을 메모리 의 한쪽 으로 압축 한 후 경계 밖의 모든 공간 을 청소 하 는 것 이다.그것 의 효율 도 높 지 않다.

좋은 웹페이지 즐겨찾기