JVM01_ 힙 메모리 할당 및 복구 메커니즘

젊은 세대

에덴은 객체에 대한 참조가 쓰레기가없는 경우 경우, 사용의 전체 목표 후 제거 에덴 풀 타임 JVM이 라는 행동이라고 가비지 컬렉션 작업 생산 YGC를 , YGC 에서만 생산 에덴 지역 전체, 생성 YGC 시간 응용 프로그램이 작동이 중지됩니다.

YGC는 두 가지를 :

누가 누가하는 주제 쓰레기 쓰레기 객체 아니라는 것을 알고 (별도 표시가 공시되지 않는의 목적을 결정하는 기준이다) 뿌리의 판단을 ①

② 이동 객체의 생존을 S0 또는 S1 지구. 비 살아있는 오브젝트는 직접 힙을 죽일. 에덴은 공기에 있었다.

③ 정리 YGC를 응용 프로그램이 일시 정지 된 경우.

④ 가 전체 생산하는 경우 개체를 청소 한 후 넣을 수 YGC 에 살아 남기 위해 S1 년, S0는 생존에 넣어 가지고 S1 년, S0는 (비어 S0 , S1 비슷한 크기의 스왑 위치의 두 생존 영역 당신은,이되었다는 생존 영역) 비어 교환 할 수 있습니다.

⑤ 判断s0s1是否都满了,如果都满了就去老年代

ygcfgc的区别:

① ygceden区和两个存活区垃圾回收,内存小、标记时间短、回收快。

② fgc对整个堆和非堆垃圾回收。

老年代

① 大对象直接进入老年代,因为比较大放到年轻代就得一直启动ygc所以直接放到老年代。

② 长期存活的对象进入老年代jvm有个参数控制产生ygc的次数(age默认15次如果这个对象在eden存活16次一直没有被销毁,就说明这个是长期存活对象,直接进入老年代)

③ 对象的动态分配原则s0s1满了之后判断age对象。age=1开始,存活区里相同的age对象大小之和是否大于存活区的一半大小,如果是下次ygc时候会把大于等于age放到老年代里。

 对象  a  b  c d e f h i j k m l n

        1  3  3   2   10  9   8   5   4   3 1 2 12

计算存活区里age对象的值,计算age里所有相同对象之和,例如:age =1  那就是a+m是否大于存活区的一半,放入老年代区域,如果age=1不满足,就计算age=2d+l之和是否大于存活区的一半对象放到老年代里。

 

추천

출처www.cnblogs.com/njq666/p/10979532.html