java - 为什么JVM中新生代有两个Survivor区?
伊谢尔伦
伊谢尔伦 2017-04-18 09:58:39
0
4
846

为什么JVM中新生代有两个Survivor区?

如题。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

모든 응답(4)
伊谢尔伦

개인적으로 S0과 S1은 성능 향상을 위해 존재한다고 생각합니다.

생존자 공간 활용도 :

언제든지 비어 있는 생존자 공간이 하나 있습니다. 다음 복사 컬렉션 중에는 eden과 다른 생존자 공간에 있는 라이브 개체가 이 공간에 복사됩니다.
라이브 객체는 객체가 충분히 오래되어 종신 세대에 배치될 수 있을 때까지 두 생존 공간 사이에서 앞뒤로 복사됩니다(과거 복사)

가비지 수집 중에 죽은 개체를 정리해야 하기 때문에 생존 영역이 하나만 있는 경우 이 생존 영역의 죽은 개체는 메모리 조각화를 방지하기 위해 정리된 후 메모리 조각을 생성합니다. 이동해야 합니다. 그러면 성능이 저하됩니다.

위의 설명에 따르면 생존 영역이 2개라면 메모리 조각화 문제는 발생하지 않습니다.

SO의 답변은 다음과 같습니다: http://stackoverflow.com/ques...

大家讲道理

신세대는 复制收集算法을 사용하고, 두 서바이버 영역은 复制收集算法과 협력하게 된다.
내 블로그 중 하나에서 이러한 유형의 문제를 자세히 소개했습니다. 관심이 있으시면 살펴보실 수 있습니다.

Peter_Zhu

각 GC 후에 두 생존자는 위치를 교환합니다
지금까지 내가 아는 유일한 것은 그것을 잃는 방법입니다

迷茫

잔해물 생성을 방지하기 위해 사용되는 전설적인 버디 시스템입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿