Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê...
Transcript of Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê...
![Page 2: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/2.jpg)
Safe Harbor / Тихая Гавань
Everything on this and any subsequent slides may be a lie. Do notbase your decisions on this talk. If you do, ask for professional help.
Всё что угодно на этом слайде, как и на всех следующих, можетбыть враньём. Не принимайте решений на основании этого
доклада. Если всё-таки решите принять, то наймитепрофессионалов.
Slide 2/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 3: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/3.jpg)
Дисклеймеры (как обычно)
Этот доклад:
1. ...рассказывает про многопоточность, а не сборку мусора.Наконец-то рассказывает про сборку мусора!
2. Рассказывает про сборку мусора вообще (насколько этопозволяет время), и про Shenandoah в частности
3. Рассказывает быстро, бодро, беспощадно
4. Рассказывает про плюсы и минусы алгоритмов сборки
Slide 3/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 4: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/4.jpg)
Минутка рекламы
По моему скромному мнению,серьёзно что-то обсуждать, непрочитав GC Handbook – к долгимпечалям и хождению по кругу
Это только кажется, что $𝑛𝑎𝑚𝑒 GC –это супер-инновация: на деле многиеGC используют учебник в хвост игриву
Slide 4/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 5: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/5.jpg)
Крупно
![Page 6: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/6.jpg)
Крупно: ландшафт
Slide 6/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 7: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/7.jpg)
Крупно: ландшафт
Slide 6/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 8: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/8.jpg)
Крупно: ландшафт
Slide 6/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 9: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/9.jpg)
Крупно: ландшафт
Slide 6/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 10: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/10.jpg)
Крупно: куча
Shenandoah – регионализованный коллектор
Похож на G1:
Разбиением на регионы
Пока что политикой сборки: в первуюочередь собирает регионы с большимколичеством мусора
Не похож на G1:
Отсутствием деления на young/old сборки
Учётом ссылок между регионами
Slide 7/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 11: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/11.jpg)
Крупно: цикл
Pause Init Mark 0.419ms
Concurrent marking 13664M->13808M(16384M) 458.434ms
Pause Final Mark 13808M->8408M(16384M) 0.986ms
Concurrent evacuation 8408M->9704M(16384M) 229.654ms
Slide 8/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 12: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/12.jpg)
Крупно: цикл
Pause Init Mark 0.419ms
Concurrent marking 13664M->13808M(16384M) 458.434ms
Pause Final Mark 13808M->8408M(16384M) 0.986ms
Concurrent evacuation 8408M->9704M(16384M) 229.654ms
Slide 8/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 13: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/13.jpg)
Крупно: цикл
Pause Init Mark 0.419ms
Concurrent marking 13664M->13808M(16384M) 458.434ms
Pause Final Mark 13808M->8408M(16384M) 0.986ms
Concurrent evacuation 8408M->9704M(16384M) 229.654ms
Slide 8/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 14: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/14.jpg)
Крупно: цикл
Pause Init Mark 0.419ms
Concurrent marking 13664M->13808M(16384M) 458.434ms
Pause Final Mark 13808M->8408M(16384M) 0.986ms
Concurrent evacuation 8408M->9704M(16384M) 229.654ms
Slide 8/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 15: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/15.jpg)
Крупно: цикл
Pause Init Mark 0.419ms
Concurrent marking 13664M->13808M(16384M) 458.434ms
Pause Final Mark 13808M->8408M(16384M) 0.986ms
Concurrent evacuation 8408M->9704M(16384M) 229.654ms
Slide 8/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 16: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/16.jpg)
Крупно: цикл
Pause Init Mark 0.419ms
Concurrent marking 13664M->13808M(16384M) 458.434ms
Pause Final Mark 13808M->8408M(16384M) 0.986ms
Concurrent evacuation 8408M->9704M(16384M) 229.654ms
Slide 8/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 17: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/17.jpg)
Крупно: цикл
Pause Init Mark 0.419ms
Concurrent marking 13664M->13808M(16384M) 458.434ms
Pause Final Mark 13808M->8408M(16384M) 0.986ms
Concurrent evacuation 8408M->9704M(16384M) 229.654ms
Slide 8/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 18: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/18.jpg)
Concurrent Mark
![Page 19: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/19.jpg)
Concurrent Mark: достижимость
Чтобы найти мусор, нужно думать как мусорузнать, есть ли ссылки на объект
Три подхода:
1. No-op: забить и считать всё достижимым
2. Mark-*: Пробежаться по графу объектов, найтидостижимое и посчитать всё остальное мусором
3. Reference counting: на каждом чтении/записи считатьколичество ссылок на объект, при refcount=0 считатьобъект мусором
Slide 10/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 20: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/20.jpg)
Concurrent Mark: трёхцветная абстракция
Граф объектов можно его обойти, назначая объектам цвета:
1. Белый: ещё не посещён
2. Серый: посещён, но ссылки не просканированы
3. Чёрный: посещён и ссылки просканированы
Минутка уныния: вся жизнь алгоритма маркировки – этопокраска белого в серое, а серого в чёрное.
Slide 11/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 21: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/21.jpg)
Concurrent Mark: трёхцветная абстракция
Граф объектов можно его обойти, назначая объектам цвета:
1. Белый: ещё не посещён
2. Серый: посещён, но ссылки не просканированы
3. Чёрный: посещён и ссылки просканированы
Минутка уныния: вся жизнь алгоритма маркировки – этопокраска белого в серое, а серого в чёрное.
Slide 11/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 22: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/22.jpg)
Concurrent Mark: stop-the-world mark
Когда приложение остановлено, всё тривиально!Никто не мешается под ногами.
Slide 12/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 23: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/23.jpg)
Concurrent Mark: stop-the-world mark
Нашли все корни, покрасили их в чёрный,т.к. они по определению достижимы
Slide 12/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 24: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/24.jpg)
Concurrent Mark: stop-the-world mark
Ссылки из чёрных теперь серые, сканируем ссылки из серых;серые – это wavefront обхода
Slide 12/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 25: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/25.jpg)
Concurrent Mark: stop-the-world mark
Сканирование из серых завершено, красим их в чёрные;новые ссылки – серые
Slide 12/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 26: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/26.jpg)
Concurrent Mark: stop-the-world mark
Серые → чёрные;достижимые из серых → серые
Slide 12/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 27: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/27.jpg)
Concurrent Mark: stop-the-world mark
Серые → чёрные;достижимые из серых → серые
Slide 12/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 28: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/28.jpg)
Concurrent Mark: stop-the-world mark
Серые → чёрные;достижимые из серых → серые
Slide 12/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 29: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/29.jpg)
Concurrent Mark: stop-the-world mark
Серые → чёрные;достижимые из серых → серые
Slide 12/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 30: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/30.jpg)
Concurrent Mark: stop-the-world mark
Конец: всё достижимое – чёрное;весь мусор – белый
Slide 12/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 31: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/31.jpg)
Concurrent Mark: проблемы с мутатором
В concurrent mark всёсложнее: там есть приложение,которое меняет граф объектов.
За это его презрительноназывают мутатором.
Slide 13/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 32: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/32.jpg)
Concurrent Mark: проблемы с мутатором
Добрался wavefront сюда,и только он начал сканировать ссылки...
Slide 14/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 33: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/33.jpg)
Concurrent Mark: проблемы с мутатором
Мутатор снёс ссылку из серого ...и вставил её в чёрный!
Slide 14/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 34: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/34.jpg)
Concurrent Mark: проблемы с мутатором
Или даже когда-нибудь потом вставил ссылку натранзитивно достижимый белый объект
Slide 14/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 35: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/35.jpg)
Concurrent Mark: проблемы с мутатором
Или даже когда-нибудь потом вставил ссылку натранзитивно достижимый белый объект
Slide 14/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 36: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/36.jpg)
Concurrent Mark: проблемы с мутатором
Марк завершился, и опаньки: есть достижимые белыеобъекты, которые мы сейчас снесём!
Slide 14/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 37: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/37.jpg)
Concurrent Mark: проблемы с мутатором
new
Ещё хуже: появился новый объект иссылку на него записали под конец марка
Slide 14/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 38: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/38.jpg)
Concurrent Mark: способы решения
Оказывается, есть два способа решить эту проблему:
1. Incremental Update: перехватить записи и обработатьвставки, обойдя новые ссылки – принимая новое на лету
2. Snapshot-at-the-Beginning: перехватить записи иобработать удаления, запомнив старые ссылки –уворачиваясь от деструктивных изменений
Slide 15/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 39: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/39.jpg)
Concurrent Mark: Incremental Update
new
Красим все новые ссылки в серый
Slide 16/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 40: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/40.jpg)
Concurrent Mark: Incremental Update
new
Конец!
Slide 16/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 41: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/41.jpg)
Concurrent Mark: Incremental Update
new
Бонус: если объект создали, но не записали, его не маркаем
Slide 16/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 42: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/42.jpg)
Concurrent Mark: Incremental Update
new
Бонус: если ссылка на объект пропала, ну и ладно!
Slide 16/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 43: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/43.jpg)
Concurrent Mark: SATB
new
Красим все старые ссылки в серый
Slide 17/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 44: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/44.jpg)
Concurrent Mark: SATB
new
Красим новые объекты в серый
Slide 17/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 45: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/45.jpg)
Concurrent Mark: SATB
new
Доделываем...
Slide 17/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 46: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/46.jpg)
Concurrent Mark: SATB
new
Конец!
Slide 17/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 47: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/47.jpg)
Concurrent Mark: SATB
new
«Snapshot At The Beginning»:пометили все достижимые на начало сборки
Slide 17/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 48: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/48.jpg)
Concurrent Mark: SATB барьер – вершки
# прочитали из TLS флажок
movsbl 0x378(%r15),%r10 # flag = *(TLS + 0x378)
# если он взведён, то прыгаем в барьер
test %r10,%r10 # if (flag) ...
jne OMG-SATB-ENABLED
# ну и пишем в объект %r12 по офсету 0x42
mov %r11,0x42(%r12) # *(obj + 0x42) = r11
Slide 18/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 49: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/49.jpg)
Concurrent Mark: SATB барьер – корешки
OMG-SATB-ENABLED:
# прочитали старое значение
mov 0x2c(%rbp),%r10d # oldval = *(obj + 0x2c)
# взяли голову тредлокальной очереди...
mov 0x388(%r15),%r11 # qhead = *(TLS + 0x388)
# дальше десяток инструкций с вакханалией
# по добавлению в очередь, проверки переполнения
# ухода в настоящий VM slowpath и т.п.
Slide 19/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 50: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/50.jpg)
Concurrent Mark: отсюда две паузы
Init Mark:
1. Остановить мутатор, чтобы избежать гонок
2. Покрасить весь rootset в чёрный
3. Взвести SATB/IU-барьеры в готовность
Final Mark:
1. Остановить мутатор, чтобы избежать гонок
2. Слить остатки из SATB/IU-очередей
3. Доделать из остатков и изменений в rootset
Slide 20/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 51: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/51.jpg)
Concurrent Mark: отсюда две паузы
Init Mark:
1. Остановить мутатор, чтобы избежать гонок
2. Покрасить весь rootset в чёрный ← самое жирное
3. Взвести SATB/IU-барьеры в готовность
Final Mark:
1. Остановить мутатор, чтобы избежать гонок
2. Слить остатки из SATB/IU-очередей
3. Доделать из остатков и изменений в rootset← самое жирное
Slide 20/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 52: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/52.jpg)
Concurrent Mark: стоимость барьеров
Overhead, %
SATB
WB RB ACMP CAS TOTAL
CMP -2.8
-0.6 -10.5 -5.0 -17.9
CPS
-1.5 -15.0 -16.6
CRY
-1.7 -2.3
DER
-0.9 -8.6 -14.6
MPG
-6.9 -13.6 -19.1
SMK
-0.2 -1.5
SER
-0.9 -8.9 -10.9
SFL
-13.2 -8.6
XML -1.4
-16.6 -1.0 -0.5 -17.2
Slide 21/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 53: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/53.jpg)
Concurrent Mark: наблюдения
1. Хорошо сделанный STW GC побьёт хорошо сделанныйconcurrent GC по чистой пропускной способности
Перевод: Если вам плевать на паузы, не выдумывайте ипользуйтесь STW GC
2. Разные GC по-разному будут влиять на приложение, дажеесли самих сборок не происходит.
Перевод: Если gc log молчит о сборках, вы всё равноплатите за барьеры
Slide 22/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 54: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/54.jpg)
Concurrent Copy
![Page 55: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/55.jpg)
Concurrent Copy: stop-the-world
Задача:есть объект, на него естьссылки, надо объект
переместить
Slide 24/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 56: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/56.jpg)
Concurrent Copy: stop-the-world
Stop The World, чтобыникто не видел, что мыпод ковром делаем
Slide 24/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 57: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/57.jpg)
Concurrent Copy: stop-the-world
Фаза 1:Копируем объект вместе
с содержимым
Slide 24/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 58: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/58.jpg)
Concurrent Copy: stop-the-world
Фаза 2:Переписываем всессылки: сохраняемfwdptr на копию
Slide 24/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 59: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/59.jpg)
Concurrent Copy: stop-the-world
Фаза 2:Переписываем всессылки: если видим
fwdptr, переписываем нановый адрес
Slide 24/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 60: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/60.jpg)
Concurrent Copy: stop-the-world
Фаза 2:Переписываем всессылки: если видим
fwdptr, переписываем нановый адрес
Slide 24/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 61: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/61.jpg)
Concurrent Copy: stop-the-world
На границе всёспокойно, отпускаеммутаторы на волю.
Готово!
Slide 24/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 62: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/62.jpg)
Concurrent Copy: проблемы с мутатором
http://vernova-dasha.livejournal.com/77066.html
В concurrentперемещении всё
сложнее:есть приложение,
которое читает и пишетв кучу как не в себя.
Slide 25/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 63: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/63.jpg)
Concurrent Copy: проблемы с мутатором
При перемещенииобъекта будут
существовать две
копии объекта, иобе эти копии
будут достижимы!
Slide 26/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 64: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/64.jpg)
Concurrent Copy: проблемы с мутатором
Один потокзаписал 𝑦 = 4 водну копию, адругой 𝑥 = 5 вдругую. Какаякопия верна?
Slide 26/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 65: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/65.jpg)
Concurrent Copy: Brooks pointers
Идея:атомарность
переписывания ссылокдостигается черездополнительноеперенаправление
Slide 27/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 66: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/66.jpg)
Concurrent Copy: Brooks pointers
Шаг 1:Спокойно копируем
объект, инициализируемего fwdptr
Slide 27/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 67: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/67.jpg)
Concurrent Copy: Brooks pointers
Теперь у нас есть копияобъекта, но про неё
никто не знает
Slide 27/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 68: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/68.jpg)
Concurrent Copy: Brooks pointers
Шаг 2:CAS! Атомарно меняемfwdptr на новую копию
Slide 27/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 69: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/69.jpg)
Concurrent Copy: Brooks pointers
Шаг 3:Спокойно (не атомарно)переписываем ссылки в
в остальной куче
Slide 27/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 70: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/70.jpg)
Concurrent Copy: Brooks pointers
Даже если кто-то придётчерез старую ссылку, онвынужден прочитатьfwdptr и узнать, гдележит новая копия
Slide 27/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 71: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/71.jpg)
Concurrent Copy: Brooks pointers
Шаг 4:Все ссылки переписаны,старая копия не нужна
Slide 27/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 72: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/72.jpg)
Concurrent Copy: Brooks pointers
Конец!
Slide 27/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 73: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/73.jpg)
Write Barriers: мотивация
To-space invariant:записи должны
случаться только вto-space, иначе они
потенциально теряются
Slide 28/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 74: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/74.jpg)
Write Barriers: реализация – вершки
# прочитали из тредлокала флажок
movzbl 0x3d8(%r15),%r11d # flag = *(TLS + 0x3d8)
# если он взведён, то прыгаем в эвакуацию
test %r11d,%r11d # if (flag) ...
jne OMG-EVAC-ENABLED
# взяли to-copy
mov -0x8(%rbp),%r10 # obj = *(obj - 8)
# ну и пишем в to-copy-объект %r10 по офсету 0x30
mov %r10,0x30(%r10) # *(obj + 0x30) = r10
Slide 29/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 75: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/75.jpg)
Write Barriers: реализация – корешки
stub Write(val, obj, offset) {
if (evac-in-progress &&
in-collection-set(obj) &&
fwd-ptrs-to-self(obj)) {
// in to-space, no copy yet, can’t write
copy = copy(obj);
obj = CAS(fwd-ptr-addr(obj), obj, copy);
} else {
obj = fwd-ptr(obj);
}
*(obj + offset) = val;
}
Slide 30/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 76: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/76.jpg)
Write Barriers: сам GC
stub evacuate(obj) {
if (in-collection-set(obj) &&
fwd-ptrs-to-self(obj)) {
// in to-space, no copy yet, can’t write
copy = copy(obj);
CAS(fwd-ptr-addr(obj), obj, copy);
}
}
Slide 31/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 77: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/77.jpg)
Write Barriers: стоимость барьеров
Overhead, %
SATB WB
RB ACMP CAS TOTAL
CMP -2.8 -0.6
-10.5 -5.0 -17.9
CPS -1.5
-15.0 -16.6
CRY
-1.7 -2.3
DER -0.9
-8.6 -14.6
MPG -6.9
-13.6 -19.1
SMK
-0.2 -1.5
SER -0.9
-8.9 -10.9
SFL
-13.2 -8.6
XML -1.4
-16.6 -1.0 -0.5 -17.2
Slide 32/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 78: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/78.jpg)
Write Barriers: наблюдения
1. Shenandoah требует WB на всех записях
Перевод: Теоретически, это большая проблема!
2. На практике, WB срабатывают редко: только во времяэвакуации, на редких эвакуируемых объектах, в моменткогда они ещё не были перемещены
Перевод: На практике, влияют мало на большинствоприложений
Slide 33/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 79: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/79.jpg)
Read Barriers: мотивация
Каждое чтение из кучиобязано (?) пройти
через чтение forwardingpointer’а, чтобы
обнаружить новуюкопию объекта.
Slide 34/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 80: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/80.jpg)
Read Barriers: реализация и стоимость
# read barrier
mov -0x8(%r10),%r10 # obj = *(obj - 8)
# а вот и чтение
mov 0x30(%r10),%r10d # val = *(obj + 0x30)
Benchmark Score Units
base +3 RBs
time 4.6 ± 0.1 5.3 ± 0.1 ns/op
L1-dcache-loads 12.3 ± 0.2 15.1 ± 0.3 #/op
cycles 18.7 ± 0.3 21.6 ± 0.3 #/op
instructions 26.6 ± 0.2 30.3 ± 0.3 #/op
Slide 35/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 81: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/81.jpg)
Read Barriers: реализация и стоимость
# read barrier
mov -0x8(%r10),%r10 # obj = *(obj - 8)
# а вот и чтение
mov 0x30(%r10),%r10d # val = *(obj + 0x30)
Benchmark Score Units
base +3 RBs
time 4.6 ± 0.1 5.3 ± 0.1 ns/op
L1-dcache-loads 12.3 ± 0.2 15.1 ± 0.3 #/op
cycles 18.7 ± 0.3 21.6 ± 0.3 #/op
instructions 26.6 ± 0.2 30.3 ± 0.3 #/op
Slide 35/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 82: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/82.jpg)
Read Barriers: стоимость барьеров
Overhead, %
SATB WB RB
ACMP CAS TOTAL
CMP -2.8 -0.6 -10.5
-5.0 -17.9
CPS -1.5 -15.0
-16.6
CRY
-1.7 -2.3
DER -0.9 -8.6
-14.6
MPG -6.9 -13.6
-19.1
SMK
-0.2 -1.5
SER -0.9 -8.9
-10.9
SFL -13.2
-8.6
XML -1.4 -16.6
-1.0 -0.5 -17.2
Slide 36/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 83: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/83.jpg)
Read Barriers: наблюдения
1. RB в принципе дешёвые, но их очень много
Перевод: утяжелять RB дальше нельзя
2. Накладные расходы сильно зависят от возможностейоптимизатора по удалению и поклейке барьеров
Перевод: работа над GC подразумевает работу надоптимизирующим компилятором
Slide 37/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 84: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/84.jpg)
Read Barriers: JMM спешит на помощь
Можно читать из from-copy, то есть не делать RB, пока:
1. Не встретим lock, volatile read/write, memory barrier
2. Не встретим непрозрачный вызов
По умолчанию можно:
1. Не переделывать RB после safepoint-а
2. Стирать RB при чтении final-ов
Slide 38/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 85: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/85.jpg)
Read Barriers: JMM спешит на помощь
Можно читать из from-copy, то есть не делать RB, пока:
1. Не встретим lock, volatile read/write, memory barrier
2. Не встретим непрозрачный вызов
По умолчанию можно:
1. Не переделывать RB после safepoint-а
2. Стирать RB при чтении final-ов
Slide 38/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 86: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/86.jpg)
Read Barriers: пример с final
На полном серьёзе: final наконец-то улучшаетпроизводительность!
Benchmark Score Units
plain final
time 2.7 ± 0.1 2.6 ± 0.1 ns/op
L1-dcache-loads 13.2 ± 0.1 11.2 ± 0.1 #/op
instructions 29.6 ± 0.6 28.5 ± 0.3 #/op
Slide 39/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 87: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/87.jpg)
ACMP: незадача
JMM нам разрешаетчитать из from-copy!
Slide 40/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 88: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/88.jpg)
ACMP: незадача
Но что если мысравниваем сами
from-copy и to-copy?
(a1 == a2) → ???
Slide 40/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 89: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/89.jpg)
ACMP: незадача
Но что если мысравниваем сами
from-copy и to-copy?
(a1 == a2) → ???
Но машинные указатели
не равны! Упс...
Slide 40/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 90: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/90.jpg)
ACMP: барьер
Даже если у нас две физические копии одного логического
объекта, то «==» должно сравнивать логически
# сравним указатели; если уже равны, до свидания
cmp %rcx,%rdx # if (a1 == a2) ...
je EQUALS
# может быть false negative; сравним to-copy
mov -0x8(%rcx),%rcx # a1 = *(a1 - 8)
mov -0x8(%rdx),%rdx # a2 = *(a2 - 8)
# сравниваем опять:
cmp %rcx,%rdx # if (a1 == a2) ...
Slide 41/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 91: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/91.jpg)
ACMP: стоимость барьеров
Overhead, %
SATB WB RB ACMP
CAS TOTAL
CMP -2.8 -0.6 -10.5 -5.0
-17.9
CPS -1.5 -15.0
-16.6
CRY -1.7
-2.3
DER -0.9 -8.6
-14.6
MPG -6.9 -13.6
-19.1
SMK
-0.2 -1.5
SER -0.9 -8.9
-10.9
SFL -13.2
-8.6
XML -1.4 -16.6 -1.0
-0.5 -17.2
Slide 42/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 92: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/92.jpg)
ACMP: наблюдения
1. Полные сравнения «==» достаточно редки
Перевод: acmp-барьеры особенно не тормозят штатныеиспользования
2. Специальные виды сравнений хорошо оптимизируются
Перевод: a == null не требует барьеров;предшествующие read-barriers клеятся с acmp, и т.д.
Slide 43/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 93: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/93.jpg)
ACMP: есть похожие проблемы?
Есть ли ещё какие-нибудь операции,которые наступают на те же грабли:
ломаются, когда есть две физические копии объекта?
Slide 44/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 94: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/94.jpg)
CAS: та же проблема
boolean compareAndSet(Object expected, Object value);
Ещё хуже, чем acmp: сравнивает со значением в памяти!
На failure-пути:
1. Может мы сравниваем to-ptr в памяти с from-ptr
2. Может в памяти from-ptr, а мы ломимся с to-ptr
3. Может в памяти from-ptr, а потом туда лёг to-ptr
4. Может в памяти to-ptr, а потом туда лёг from-ptr
Slide 45/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 95: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/95.jpg)
CAS: стоимость барьеров
Overhead, %
SATB WB RB ACMP CAS
TOTAL
CMP -2.8 -0.6 -10.5 -5.0
-17.9
CPS -1.5 -15.0
-16.6
CRY -1.7
-2.3
DER -0.9 -8.6
-14.6
MPG -6.9 -13.6
-19.1
SMK -0.2
-1.5
SER -0.9 -8.9
-10.9
SFL -13.2
-8.6
XML -1.4 -16.6 -1.0 -0.5
-17.2
Slide 46/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 96: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/96.jpg)
CAS: наблюдения
1. В большинстве алгоритмов отказ в CAS достаточно редок
Перевод: если у вас отказал CAS, то скорее всего у васкуда бОльшие проблемы с производительностью, чем барьер
2. Большая часть CAS-барьера – многократная перестраховкаот ультра-редких событий
Перевод: Она вынесена из критического пути и в норме невлияет
Slide 47/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 97: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/97.jpg)
В целом
![Page 98: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/98.jpg)
В целом: наблюдения
1. Барьеры стоят, и стоят много.
Перевод: Concurrent GC будет стоить даже без сборок
2. Чем больше GC делает без пауз, тем больше оверхед
Перевод: Паузы vs пропускная способность, привет
3. Размышления об оверхедах в отрыве от выигрышей, которыеони дают, технически интересны, но упускают главное
Перевод: Барьеры жрут циклы не просто так
Slide 49/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 99: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/99.jpg)
Partial
![Page 100: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/100.jpg)
Partial: сравнивая с ParallelOld
G1 Shenandoah
default max-mark max-copy
CMP -15% -20% -73% -76%
CPS 0% -18% -66% -80%
CRY 0% 0% -57% -64%
DER -7% -18% -66% -76%
MPG -1% -19% -64% -74%
SMK -2% -4% -55% -67%
SER -5% -20% -68% -72%
SFL -6% -17% -64% -64%
XML -12% -27% -75% -75%
Slide 51/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 101: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/101.jpg)
Partial: сравнивая с ParallelOld
G1 Shenandoah
default max-mark max-copy
CMP -15% -20% -73% -76%
CPS 0% -18% -66% -80%
CRY 0% 0% -57% -64%
DER -7% -18% -66% -76%
MPG -1% -19% -64% -74%
SMK -2% -4% -55% -67%
SER -5% -20% -68% -72%
SFL -6% -17% -64% -64%
XML -12% -27% -75% -75%
Slide 51/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 102: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/102.jpg)
Partial: сравнивая с ParallelOld
G1 Shenandoah
default max-mark max-copy
CMP -15% -20% -73% -76%
CPS 0% -18% -66% -80%
CRY 0% 0% -57% -64%
DER -7% -18% -66% -76%
MPG -1% -19% -64% -74%
SMK -2% -4% -55% -67%
SER -5% -20% -68% -72%
SFL -6% -17% -64% -64%
XML -12% -27% -75% -75%
Slide 51/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 103: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/103.jpg)
Partial: сравнивая с ParallelOld
G1 Shenandoah
default max-mark max-copy
CMP -15% -20% -73% -76%
CPS 0% -18% -66% -80%
CRY 0% 0% -57% -64%
DER -7% -18% -66% -76%
MPG -1% -19% -64% -74%
SMK -2% -4% -55% -67%
SER -5% -20% -68% -72%
SFL -6% -17% -64% -64%
XML -12% -27% -75% -75%
Slide 51/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 104: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/104.jpg)
Partial: сравнивая с ParallelOld
G1 Shenandoah
default max-mark max-copy
CMP -15% -20% -73% -76%
CPS 0% -18% -66% -80%
CRY 0% 0% -57% -64%
DER -7% -18% -66% -76%
MPG -1% -19% -64% -74%
SMK -2% -4% -55% -67%
SER -5% -20% -68% -72%
SFL -6% -17% -64% -64%
XML -12% -27% -75% -75%
Slide 51/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 105: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/105.jpg)
Partial: деление кучи
Проблема: собирать всю кучу дорого.Для STW GC «дорого» = «большие паузы»
Идея:
1. Разделим кучу по какому-нибудь признаку:возраст, размер, класс, контекст, поток
2. Будем собирать подкучи отдельно
Slide 52/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 106: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/106.jpg)
Partial: гипотезы о поколениях
Слабая гипотеза:большинство объектовумирают молодыми
Slide 53/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 107: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/107.jpg)
Partial: Serial/Parallel/CMS
Serial/Parallel этоэксплуатируют делением
кучи на поколения
Slide 54/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 108: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/108.jpg)
Partial: Serial/Parallel/CMS
Young можно собратьотдельно, если мы знаемвсе входящие ссылки изOld – для этого есть
Card Table
Slide 54/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 109: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/109.jpg)
Partial: Serial/Parallel/CMS
Во время Youngсобираем его целиком и«грязные» части Old
Slide 54/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 110: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/110.jpg)
Partial: G1
G1 делает это сложнее: унего есть как Card Table,так и Remembered Sets
Slide 55/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 111: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/111.jpg)
Partial: G1
При записи помечаемCard Table, но этого не
хватает, чтобы собратьтолько один регион
Slide 55/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 112: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/112.jpg)
Partial: G1
По Card Table G1асинхронно строит
Remembered Sets: списокгрязных кусков длякаждого региона
Slide 55/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 113: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/113.jpg)
Partial: G1
Теперь можно собратьодин регион: RSet нампоказывает, что ещё
сканировать
Slide 55/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 114: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/114.jpg)
Partial: G1
Практика показала,что RSet-ы огромные, и
поэтому G1 сталgenerational : частьрегионов считается
молодыми
Slide 55/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 115: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/115.jpg)
Partial: G1
Интересные вилы:теперь young-регионыможно собрать толькоцеликом, нельзя собрать
один young-регион!Ссылки-то между young
не записаны...
Slide 55/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 116: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/116.jpg)
Partial: Shenandoah
Идея: почему бы несделать более грубый
card table, но длякаждого региона?
Slide 56/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 117: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/117.jpg)
Partial: Shenandoah
Тогда мы можемподдержать матрицу
связности регионов, иточно знать какиегруппы регионов мыможем собирать
Slide 56/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 118: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/118.jpg)
Partial: Shenandoah
Собираем первыйрегион, и матрица
говорит, что надо ещёпросмотреть четвёртый.
Конец.
Slide 56/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 119: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/119.jpg)
Partial: наблюдения
1. STW GC очень важно не собирать всю кучу
Перевод: будут поколения, LOH, и т.п.
2. Паузам в сoncurrent GC всё равно, собираем всю кучу илитолько часть. Пропускная способность concurrent GCстановится лучше с частичными сборками.
Перевод: Частичные сборки в принципе не нужны, ноулучшают незаметность коллектора.
Slide 57/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 120: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/120.jpg)
XXX
![Page 121: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/121.jpg)
XXX: гипотезы о поколениях
Сильная гипотеза:чем старше объект, темдольше он проживёт.
Упс, поведение кешей сполитикой Least Recently
Used ей прямопротиворечит.
Slide 59/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 122: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/122.jpg)
XXX: гипотезы о поколениях
Сильная гипотеза:чем старше объект, темдольше он проживёт.
Упс, поведение кешей сполитикой Least Recently
Used ей прямопротиворечит.
Slide 59/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 123: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/123.jpg)
XXX: гипотезы о поколениях
Сильная гипотеза:чем старше объект, темдольше он проживёт.
Упс, поведение кешей сполитикой Least Recently
Used ей прямопротиворечит.
Slide 59/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 124: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/124.jpg)
XXX: гипотезы о поколениях
Сильная гипотеза:чем старше объект, темдольше он проживёт.
Упс, поведение кешей сполитикой Least Recently
Used ей прямопротиворечит.
Slide 59/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 125: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/125.jpg)
LRU
![Page 126: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/126.jpg)
LRU: гадкий ворклоад
Чудовищно неудобная нагрузка для простых generational GC(если следуют слабой гипотезе о поколениях, и верят в сильную)
1. Прикидывается young-gc нагрузкой, особенно на чтениях
2. По мере заполнения кеша растёт Live Data Set (LDS)
3. LDS обычно измеряется десятками гигабайт – это ж кэш
4. Как кэш набухнет, начинает отпускать старые объекты
5. Как правило, удаление старых объектов фрагментирует кучу
Slide 61/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 127: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/127.jpg)
LRU: самый простой LRU
Самая простая реализация LRU в JDK?
cache = new LinkedHashMap<>(size*4/3, 0.75f, true) {
@Override
protected boolean removeEldestEntry(Map.Entry<> eldest) {
return size() > size;
}
};
Slide 62/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 128: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/128.jpg)
LRU: самый простой LRU
Самая простая реализация LRU в JDK?
cache = new LinkedHashMap<>(size*4/3, 0.75f, true) {
@Override
protected boolean removeEldestEntry(Map.Entry<> eldest) {
return size() > size;
}
};
Slide 62/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 129: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/129.jpg)
LRU: тест
Скучная конфигурация:
1. Shenandoah JDK 9 (latest)
2. 8 потоков на i7-4790K
3. Средненькая куча: -Xmx8g -Xms8g
4. 90% hit rate, 90% чтений, 10% записей
5. Size (LDS) = 0..100% от -Xmx
Меняя размер кеша, меняем LDS ⇒ставим GC в неудобные положения
Slide 63/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 130: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/130.jpg)
LRU: Pauses vs. LDS
●●
●
●
●●●●●●
●●
●●●●●
●●●
●●
●
●
●●
●●
●●●
●
●●●●●●●
●●
●●
●●●●●
●●●●●●●●●●
●
●●●●●●●
●●●●●●●●●●
●●●●●●●●●
●●●
●●●●
●●
●●
●●●●●●●●●●●●●●●●●●●
●
●●●●●●●●●●●●●
●●●●●
●
●●●●●●●●●●●●●●
●●●●●
G1 ParallelOld CMS Shenandoah
10−4
10−3
10−2
10−1
100
101
0 20 40 60 80 100 0 20 40 60 80 100 0 20 40 60 80 100 0 20 40 60 80 100LDS, %
Pau
se ti
me,
sec
Slide 64/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 131: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/131.jpg)
LRU: Pauses vs. LDS
●●
●
●
●●●●●●
●●
●●●●●
●●●
●●
●
●
●●
●●
●●●
●
●●●●●●●
●●
●●
●●●●●
●●●●●●●●●●
●
●●●●●●●
●●●●●●●●●●
●●●●●●●●●
●●●
●●●●
●●
●●
●●●●●●●●●●●●●●●●●●●
●
●●●●●●●●●●●●●
●●●●●
●
●●●●●●●●●●●●●●
●●●●●
G1 ParallelOld CMS Shenandoah
10−4
10−3
10−2
10−1
100
101
0 20 40 60 80 100 0 20 40 60 80 100 0 20 40 60 80 100 0 20 40 60 80 100LDS, %
Paus
e ti
me,
sec
Slide 64/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 132: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/132.jpg)
LRU: Pauses vs. LDS
●●
●
●
●●●●●●
●●
●●●●●
●●●
●●
●
●
●●
●●
●●●
●
●●●●●●●
●●
●●
●●●●●
●●●●●●●●●●
●
●●●●●●●
●●●●●●●●●●
●●●●●●●●●
●●●
●●●●
●●
●●
●●●●●●●●●●●●●●●●●●●
●
●●●●●●●●●●●●●
●●●●●
●
●●●●●●●●●●●●●●
●●●●●
G1 ParallelOld CMS Shenandoah
10−4
10−3
10−2
10−1
100
101
0 20 40 60 80 100 0 20 40 60 80 100 0 20 40 60 80 100 0 20 40 60 80 100LDS, %
Paus
e ti
me,
sec
No STWOld GC
Slide 64/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 133: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/133.jpg)
LRU: Pauses vs. LDS
●●
●
●
●●●●●●
●●
●●●●●
●●●
●●
●
●
●●
●●
●●●
●
●●●●●●●
●●
●●
●●●●●
●●●●●●●●●●
●
●●●●●●●
●●●●●●●●●●
●●●●●●●●●
●●●
●●●●
●●
●●
●●●●●●●●●●●●●●●●●●●
●
●●●●●●●●●●●●●
●●●●●
●
●●●●●●●●●●●●●●
●●●●●
G1 ParallelOld CMS Shenandoah
10−4
10−3
10−2
10−1
100
101
0 20 40 60 80 100 0 20 40 60 80 100 0 20 40 60 80 100 0 20 40 60 80 100LDS, %
Paus
e ti
me,
sec
No STWYoung GC
Slide 64/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 134: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/134.jpg)
LRU: Pauses vs. LDS
●●
●
●
●●●●●●
●●
●●●●●
●●●
●●
●
●
●●
●●
●●●
●
●●●●●●●
●●
●●
●●●●●
●●●●●●●●●●
●
●●●●●●●
●●●●●●●●●●
●●●●●●●●●
●●●
●●●●
●●
●●
●●●●●●●●●●●●●●●●●●●
●
●●●●●●●●●●●●●
●●●●●
●
●●●●●●●●●●●●●●
●●●●●
G1 ParallelOld CMS Shenandoah
10−4
10−3
10−2
10−1
100
101
0 20 40 60 80 100 0 20 40 60 80 100 0 20 40 60 80 100 0 20 40 60 80 100LDS, %
Paus
e ti
me,
sec
LDS is waytoo large
Slide 64/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 135: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/135.jpg)
LRU: Perf vs. LDS
●
●● ●
● ●●
●
● ● ● ●●
●
●
●
●
●
●●
●
●
●●
●
● ●
●●
●
●
●●
●
●
●
●
●
● ● ● ● ● ● ● ● ●
● ● ●●
●●
●
●●
●
●
● ● ● ● ● ● ● ● ● ● ● ● ●
●● ●
●
●
●
0
20
40
60
80
100
0 20 40 60 80 100LDS, %
gc ● ● ● ● G1 ParallelOld CMS Shenandoah
GC Pause Time, %
●● ●
● ● ● ●●
● ● ● ● ● ●●
●
●
●
●
●●
●●
● ●●
● ●
●
●●
●●
●
● ●●
●
●● ● ● ● ● ● ● ●
● ● ●
●●
●
●●
●
●
●● ● ● ● ● ● ● ● ●
●
● ● ●
●●
● ●
●
103
104
0 20 40 60 80 100LDS, %
gc ● ● ● ● G1 ParallelOld CMS Shenandoah
Operation Time, ns/op
Slide 65/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 136: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/136.jpg)
Выводы
![Page 137: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/137.jpg)
Выводы: одной картинкой
Универсального GC не существует:либо низкие паузы, либо низкие накладные расходы
(, либо дикие расходы по памяти)
Выбирайте под нагрузку!Slide 67/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 138: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/138.jpg)
Выводы: одной строкой
1. Знание того, как работают коллекторы, позволяет выбратьнужный коллектор под нагрузку
2. Concurrent Mark – в целом решённая проблема, и избавляетот существенной части пауз. G1 и CMS уже готовы в этомпомочь.
3. Сoncurrent Сopy/Сompact – проблема, которая должна бытьрешена для ещё более низких пауз. В этом месте появляетсяShenandoah.
Slide 68/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 139: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/139.jpg)
Выводы: где взять
https://wiki.openjdk.java.net/display/shenandoah/
Несколько способов:
1. Долгий: дождаться включения в upstream OpenJDK:где-то в районе Java 10
2. Средний: дождаться включения/обновлений в IcedTea:т.е. RHEL, Fedora, Debian, Gentoo; в том числе 8u, 9
3. Короткий: взять бинарные билды или построить самим:строится и запускается как обычный OpenJDK
Slide 69/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 140: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/140.jpg)
Шиза
![Page 141: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/141.jpg)
Шиза: жирная JVM
-Xmx4T -Xms4T, 1T живых данных
Shenandoah:Pause Init Mark 28.901ms
Concurrent marking 1942G->2069120M(4194G) 3844.822ms
Pause Final Mark 2069G->1639G(4194G) 136.814ms
Concurrent evacuation 1639G->1837G(4194G) 6961.820ms
Concurrent reset bitmaps 973.670ms
G1:
Pause Young (G1 Evac Pause) 2813G->2790G(4194G) 26890.949ms
Pause Mixed (G1 Evac Pause) 2974G->2697G(4194G) 31789.592ms
Slide 71/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’
![Page 142: Shenandoah GC - сборщик мусора, который смогShenandoah GC ñáîðùèê ìóñîðà, êîòîðûé ñìîã Aleksey Shipil¼v shade@redhat.com @shipilev](https://reader031.fdocuments.us/reader031/viewer/2022040206/5ec9a8d9b24d80163d519d00/html5/thumbnails/142.jpg)
Шиза: жирная JVM
-Xmx4T -Xms4T, 1T живых данных
Shenandoah:Pause Init Mark 28.901ms
Concurrent marking 1942G->2069120M(4194G) 3844.822ms
Pause Final Mark 2069G->1639G(4194G) 136.814ms
Concurrent evacuation 1639G->1837G(4194G) 6961.820ms
Concurrent reset bitmaps 973.670ms
G1:
Pause Young (G1 Evac Pause) 2813G->2790G(4194G) 26890.949ms
Pause Mixed (G1 Evac Pause) 2974G->2697G(4194G) 31789.592ms
Slide 71/71. «Shenandoah GC», Aleksey Shipilёv, 2017, D:20170408094919+02’00’