Разница между GC CLR (.Net) и GC JVM, а не самими языками.
Оба могут быть изменены, а спецификация их поведения свободна, чтобы можно было изменить это без ущерба для правильности программ.
Существуют некоторые исторические различия в значительной степени из-за того, что .Net разрабатывался с учетом уроков эволюции Java (и других платформ, основанных на gc). В дальнейшем не предполагайте, что .Net one был в некотором роде превосходящим, потому что он включал функциональность с самого начала, это просто результат прихода позже.
Заметное публично видимое различие заключается в том, что MS GC раскрывает свою порождающую природу (через API GC), что, вероятно, останется верным в течение некоторого времени, поскольку это очевидный подход, основанный на поведении, которое демонстрирует большинство программ: Большинство ассигнования чрезвычайно недолговечны.
В первоначальной JVM не было сборщиков мусора, хотя эта функция была быстро добавлена.
Коллекторы первого поколения, внедренные Oracle Sun и другими, как правило, были Марком и Свипом. Было понято, что компактный подход с разметкой меток приведет к гораздо лучшей локализации памяти, оправдывая дополнительные затраты на копирование. Среда выполнения CLR дебютировала с таким поведением.
Разница между Sun Oracle и Microsoft в реализации GC - это «конфигурация».
Sun предоставляет огромное количество опций (в командной строке) для настройки аспектов ГХ или переключения его между различными режимами. Многие опции имеют -X или -XX, чтобы указать на отсутствие поддержки в разных версиях или поставщиках. CLR, напротив, обеспечивает почти отсутствие возможности конфигурирования; Ваш единственный реальный вариант - использование серверных или клиентских коллекторов, которые оптимизируют соответственно задержку пропускной способности стихов.
Активное исследование стратегий GC продолжается в обеих компаниях (и в реализациях с открытым исходным кодом), текущие подходы, используемые в самых последних реализациях GC, относятся к областям eden потоков (улучшая локальность и позволяя коллекции eden потенциально не вызывать полную паузу). ), а также подходы, предшествующие владению, которые пытаются избежать размещения определенных распределений в генерации eden.