JVM 핫스팟에서 JVM은 젊은 생성 세대 및 뿌리를 표시 할 때 GC 유형 CMS 및 G1에 대한 구 세대 초기 마킹 구와 같은 일부 표시 문구에서 뮤 테이터 스레드 (STW)를 중지해야 함을 알고 있습니다.일부 표시 문구에서 GC가 뮤 테이터 스레드를 중지해야하는 이유는 무엇입니까?
이 문구 중에 왜 STW가 필요한지 알 수 있습니까? 뮤 테이터와 마크 스레드 간의 경쟁 조건을 피하려면?
우리는 STW를 방지하기 위해 동시 표시 문구와 동일한 기술을 사용합니까?
"차고 수집 핸드북"과 CMS 논문 "세대 간 거의 동시 가비지 수집기"라는 책을 읽었을 때, 정말로 CMS에 대한 전체 프로세스를 알고 있습니다. 왜 루트 집합을 표시 할 때 STW를 피하기 위해 동시 마킹 구문과 동일한 기술을 사용할 수 있습니까? 스택 프레임이 팝되고 새로운 스택이 푸시 된 경우와 같이 쓰기 장벽이나 유사한 기술과 같은 기술을 사용하여 스택 프레임을 기록 할 수 있습니까? 우리는 루트 집합을 마킹하는 마지막 단계에서 다시 말을합니다. 적어도 우리는 전체 휴지기 시간을 짧게 할 수 있습니다. –
예, 완전히 동시 GC를 허용하도록 알고리즘을 수정할 수 있습니다. 이것이 Azul의 C4 알고리즘이 수행하는 것이지만 핫스팟의 CMS 수집기와 다릅니다. 여기에서 기술 자료를 얻을 수 있습니다 : https://info.azul.com/2015-WEB-WP-C4-LP.html – Speakjava