JVM 쓰레기 회수 에 어떤 상용 알고리즘 이 있 는 지 간단히 말 하 다
쓰레기 수 거:
앞으로 의 JDK 에 서 는 G1 이 ZGC 로 대 체 될 수 있 습 니 다.
먼저 자신 에 게 몇 가지 질문 을 한다.
쓰레기 란 무엇 인가?
표식&제거
1.인용 계수(참조 계수):
자바 는 이 알고리즘 에 필요 한 추가 처리 가 너무 많 기 때문에 이러한 알고리즘 을 배제 했다.
[우]효율 이 높 고 python 도 사용 하고 있 습 니 다.논문 의 인용 인자 처럼 쓸모없는 글 은 많이 회수 하고 학술 쓰레기 를 치 워 야 합 니 다.
[부족]대상 의 상호'순환 인용'을 처리 할 수 없고 인용 고리 가 형성 되면 해결 할 방법 이 없다.메모리 유출 로 이 어 진다.
2.접근 성 분석⭐(루트 검색,추적 차고 컬 렉 션):
GC Roots=시작 노드 집합,GC Roots 부터 아래로 검색,연결 경 로 는 참조 체인,GC Roots 가 도달 할 수 없 는 대상 은 사용 불가 판정 을 받 았 습 니 다.
어떤 게 GC Roots 예요?
[부족]옮 겨 다 녀 야 돼 요.
3.쓰레기 수집 알고리즘:
태그 지우 기 알고리즘
복제 알고리즘
태그 지우 기 정리 알고리즘
태그-지우 기 알고리즘:
먼저 mark 가 대상 에 도달 하고 루트 노드 부터 선형 으로 옮 겨 다 닙 니 다.
[우]고 르 네.
【결】효율 이 높 지 않 습 니 다.GC 일 때 STW 가 발생 합 니 다.알 고 나 면 메모리 조각 이 존재 합 니 다(남 은 목록 이 존재 합 니 다)
이것 은 가장 빠 른 제거 알고리즘 이다.
복제 알고리즘
먼저 공간 을 두 부분 으로 나 누 어 표 시 된 대상 을 다른 공간 으로 정연 하 게 옮 깁 니 다(바늘 이 부 딪 히 는 방식).
【우】효율 적 이 고 mark/sweep 가 필요 없습니다.메모리 조각 없 음;
[결원]많은 공간 을 희생 했 습 니 다."다 쓰레기 였 으 면 좋 겠 어 요!"
태그-지우 기-정리 알고리즘
태그 후 지우 고 정리 합 니 다.태그 제거 알고리즘 최적화 판 에 속 합 니 다.남 은 목록 이 없습니다.
【우】빈 목록 이 없고 메모리 조각 이 없습니다.공간 비용 이 낮다.
[부족]시간 이 느 려 서 여러 번 조작 해 야 합 니 다.
4.finalize&메모리 분석 도구
finalization―면사 금메달
finalize 는 GC 호출 입 니 다.
[Q]회수 할 때 어떤 조작 이 걸 리 나 요?어떤 상태 가 수반 되 나 요?
메모리 분석 기 도구 메모리 분석 도구
dump 파일 분석:GC Roots 에 따라 소스 추적,메모리 누 출 감시→JProfiler
파 티 션 알고리즘
쌓 인 공간 을 작은 공간 으로 나 누 는 것 은 정지 시간 을 낮 추고 지연 을 낮 추기 위해 서다.
실제 사용 은 모두 복합 알고리즘 이다.
String
final 은 죽은 것 이 고 계승 할 수도 없고 수정 할 수도 없다.
Serializable 수식 은 크로스 프로 세 스 입 니 다.
Comparable 비교 가능
JVM 쓰레기 수 거 에 대해 자주 사용 되 는 알고리즘 이 있 는 지 에 대한 글 은 여기까지 입 니 다.더 많은 JVM 쓰레기 수 거 알고리즘 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
IntelliJ IDEA 2019.2의 새로운 기능 프로파일 러를 사용해 보았습니다.이번의 새로운 기능은 초호화! 저는 퍼포먼스 개선을 자주 합니다만, IntelliJ IDEA에도 프로파일링 툴이 붙게 되었으므로, 사용해 보았습니다. 편리한 것 같았기 때문에, 앞으로의 메인 웨폰은 이것이 될 것 같...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.