Мне интересно, каковы различия или одинаковы для обоих.
Как сборка мусора выполняется на Java и как она сравнивается с .net?
Ответ 1
Я нашел эту ссылку из моего другого вопроса на SO, который отвечает на немного о различиях сборки мусора в Java и .NET/С#. Для других, кто ищет такую информацию, вот она -
В Java объекты создаются на кучи, используя новое ключевое слово. Наиболее классы в С# создаются в куче используя новое ключевое слово. Также так же, как и JVM управляет уничтожением объекты так же делает CLR через Отметка и сборка мусора Алгоритм
ПРИМЕЧАНИЕ. С# также поддерживает стеки классы, называемые типами значений, которые обсуждается ниже.
Ответ 2
Этот вопрос не подотчетен.
Во-первых, ни одна из соответствующих спецификаций ничего не сообщит о том, как Java или .net должны реализовывать сборку мусора. Таким образом, буквально нет "способа выполнения GC" на Java или в .net.
Во-вторых, детали того, как выполняется GC, различаются между различными поставщиками для Java и .net соответственно, и для любого поставщика GC может измениться с каждой платформой, каждой основной версией, малой версией и даже каждой версией патча. Кроме того, некоторые реализации Java позволяют выбирать между различными сборщиками мусора, используя параметры командной строки.
Наконец, на самом деле не имеет значения, как GC реализован в реализации Java или .NET, при условии, что его можно заставить работать в соответствии с требованиями приложения. И для Java ответ заключается в том, что он может использоваться для большинства видов приложений. (Исключение составляют, как правило, системы/приложения с жесткими требованиями реального времени или очень жесткие ограничения памяти.)
Ответ 3
Я полагаю, что концептуальной разницы нет. Поскольку модели памяти отличаются друг от друга (например, разница волатильности), реализация может различаться.