Существует множество различных стратегий сбора мусора, которые с годами стали более изощренными и эффективными. В литературе и в Интернете есть много отличных ресурсов, которые рассказывают о них. Но я также нахожу, что иногда несовершенная и красочная метафора дает мне интуицию, которая помогает мне начать. Итак, позвольте мне попробовать:
.NET имеет так называемый «сборщик мусора», и я думаю, что он ведет себя так же, как и я сам. Я позволяю грязной одежде и почте («объекты C #») накапливаться по всему полу моей гостиной («память») в течение нескольких дней, и когда я обнаруживаю, что больше не вижу ковер («память заполнена») Я провожу некоторое время, убирая («сбор мусора») в гостиной («поколение 0»), выбрасывая ненужные объекты («больше не достижимы») и перемещая оставшиеся в мою спальню ( "поколение 1"). Довольно часто это отнимает у меня время, и мне больше не нужно делать работу. Но когда моя спальня заполняется, я делаю что-то подобное, выбрасывая некоторые предметы и перемещая другие в подвал («поколение 2»). Иногда даже подвал заполняется, и тогда у меня возникает реальная проблема, и мне нужно провести серьезную весеннюю уборку («полный сбор»).
Применяя эту метафору к вашему примеру, мы могли бы догадаться, что первый кусок мусора ("объект кучи") просто сидит, пока я не собираюсь его собирать ("запустить сборщик 0-го поколения"), который происходит, когда я чувствую нравится, когда пол полностью покрыт или, может быть, никогда: -)