> Java > java지도 시간 > 본문

JVM 고급 기능 - 가비지 수집 알고리즘 튜토리얼

巴扎黑
풀어 주다: 2017-06-26 11:41:53
원래의
1088명이 탐색했습니다.

1. Mark-and-clear 알고리즘

Mark-and-clear 알고리즘은 가장 기본적인 수집 알고리즘입니다. 실행 프로세스는 이름과 마찬가지로 Marking과 Clear의 두 단계로 나뉩니다. , 재활용이 필요한 개체를 표시하세요. 표시 완료되면

아래 그림

과 같이 표시된 개체가 균일하게 재활용됩니다.  구체적인 마킹 프로세스에 대한 소개는 가비지 컬렉션을 위한 객체 생존 알고리즘 결정에 대한 이전 기사에서 소개한 "도달성 분석"을 참조하세요

                                  

      

재활용 후 상태

   

  단점:

  1. 표시와 지우기 두 가지 작업의 효율성이 그리 높지 않습니다

   2. 그림에서 볼 수 있듯이 지우고 나면 메모리에 조각이 많이 남게 됩니다. 큰 객체에 메모리 공간을 할당할 때 충분히 큰 연속 공간을 찾지 못해 미리 GC가 발생할 수 있다는 점이다.

2. 복사 알고리즘

복사 알고리즘의 원리는 메모리 공간을 동일한 크기의 두 부분으로 나누는 것입니다. 가비지 수집이 필요할 때 사용된 메모리

에 남아 있는 개체는 메모리 조각에 다른 메모리 조각으로 복사한 다음 이전 메모리 조각을 지웁니다. 아래 사진과 같습니다

           재활용 전 상태

    

  

       재활용 후 상태

   

    장점: 복제 알고리즘이 더 효율적입니다

   단점: 이 알고리즘 희생 공간은 더 커졌고 결국 사용 가능한 메모리 공간은 원래의 절반이되었습니다

3. 마크 정렬 알고리즘

 

이것은 구세대에서 일반적으로 사용되는 알고리즘입니다. 생성 개체는 오랜 시간 동안 저장됩니다.

 마킹 및 정렬 알고리즘의 마킹 프로세스는 마크 클리닝 알고리즘과 동일하지만 후속 단계가 다릅니다. 마킹 및 정렬 알고리즘은 살아남은 개체를 한쪽 끝으로 이동시키고,

 그리고 그 다음은 다음과 같습니다. 다음과 같이 살아남은 끝 경계의 반대쪽 끝에 있는 모든 메모리를 정리합니다.

     재활용 후 상태

  

4. 세대별 수집 알고리즘

현재 가상머신에서는 세대별 수집 알고리즘을 사용하고 있으며, 이 알고리즘은 객체의 다양한 생존 기간에 따라 메모리를 여러 영역으로 나눕니다.

상용 가상 머신에서는 복사 알고리즘을 사용하여 새로운 세대를 가비지 수집합니다. 그 이유는 새로운 세대의 개체 중 98%가 매우 짧은 생존 시간을 가지기 때문입니다. 메모리를 동일한 크기의 두 부분으로 나눌 필요가 없습니다. 블록은 살아남은 개체를 복사할 수 있도록 작은 공간만 남겨두면 됩니다. 따라서

메모리는 일반적으로 더 큰 Eden 영역과 두 개의 작은 Survivor 영역으로 구분됩니다.

위 내용은 JVM 고급 기능 - 가비지 수집 알고리즘 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿