Что случилось с меткой-и-разверткой GCs?

О рекомендации использовать DasKeyboard, я только что начал использовать тот сегодня! Но знайте, что это делает много шума. Я был умерщвлен, сколько шума это делало в моем супер тихом офисе заполненный другими людьми, которые являются инженерами, но главным образом не разработчиками. Я спросил человека напротив меня, если это было слишком шумным. Она колебалась для части секунды прежде, чем настоять, что было хорошо, и когда я сказал, что уберу его, она едва выступила. Таким образом, я собрал его. Возможно, если бы Вы просто окружаетесь другим devs, он был бы в порядке. Я хотел бы услышать о противоположных событиях. Я стучу далеко от дома прямо сейчас хотя, максимально громкий, и люблю его!

, О, и Вы будете определенно учиться касаться типа! Прямо сейчас у меня есть изображение маркированной клавиатуры как мой рисунок рабочего стола, но отношусь к нему все меньше и меньше.

Mike

8
задан RCIX 23 October 2009 в 06:07
поделиться

3 ответа

Вот контекст цитаты:

Сборщики мусора поколения - это лучший ответ, который у меня есть на это, потому что сокращает паузы и, откровенно говоря, сборщики мусора для всех [новые] динамические языки сегодня дерьмо. Они метки и зачистки, или они подсчитываются по ссылкам.

Судя по цитате, он говорит о довольно примитивных GC, которые не являются поколениями. Генерационные сборщики мусора все еще могут быть помечены и очищены, но большую часть времени у них намного меньше, чем нужно отмечать, что делает их намного быстрее, чем «каждый раз отмечать и очищать мир».

Предполагая, что он имел в виду именно это, я согласен - но он мог бы выразиться более ясно. Имейте в виду, что это была беседа, а не докторская диссертация - придумать наиболее четкий способ выразить себя «на копытах» довольно сложно :)

10
ответ дан 5 December 2019 в 04:38
поделиться

Вот высокоуровневое сравнение различных методов, упомянутых в указанной цитате (плюс «пометить и сжать» ... что является разновидностью маркировки и развертки. )

Свойства сборки с подсчетом ссылок:

  • PRO - мусор удаляется немедленно (кроме циклов)
  • PRO - паузы при сборке мусора меньше и минимальны, если вы можете отложить обновление данных "свободного места" структура.
  • CON - количество ссылок необходимо настроить для большинства операций записи указателя
  • CON - свободное пространство никогда не сжимается
  • CON - поскольку свободное пространство не сжимается, необходимо поддерживать структуру данных «свободного пространства», которая увеличивается затраты на размещение и освобождение.
  • CON - циклический мусор не собирается, если приложение не разорвет цикл вручную.
  • CON - обновление счетчиков ссылок в многопоточном приложении требует дополнительных затрат.

Для классической функции mark-and-sweep:

  • PRO - нет накладных расходов на запись указателя
  • PRO - собираются циклические данные
  • PRO - узких мест параллелизма управления хранилищем можно избежать (кроме GC)
  • CON - остановка сборки мусора
  • CON - свободное пространство никогда не сжимается
  • CON - поскольку свободное пространство не сжимается, a " структура данных свободного пространства должна поддерживаться, что увеличивает затраты на выделение и освобождение.

Классическая метка и очистка иногда модифицируется так, что фаза очистки сжимает свободное пространство за счет «сдвига» не мусорных объектов. Это называется «компактная метка с разверткой». Это довольно сложно, но:

  • PRO - нет накладных расходов на запись указателя
  • PRO - собираются циклические данные
  • PRO - можно легко избежать узких мест параллелизма в управлении хранилищем (кроме GC)
  • CON - остановить сборку мусора
  • PRO - свободное пространство сжимается, поэтому размещение дешево
  • CON - компактная фаза довольно дорого

Современные коллекторы (включая типичные коллекторы поколений) основаны на метке и копировании. Идея состоит в том, что коллекционер отслеживает объекты «из космоса», копируя их «в космос». Когда это будет сделано, в конце «to space» будет непрерывный кусок свободного пространства, который можно использовать для размещения новых объектов. Старое «из космоса» откладывается в сторону для следующего запуска сборщика мусора. так что распределение дешево

  • PRO - уплотнение обходится дешевле, чем со скользящим компактером
  • CON - вам необходимо зарезервировать дополнительное пространство объекта для коллектора.
  • Сборщик поколений - это тот, в котором есть несколько пространств (поколений ), которые собираются с разной скоростью. Это основано на гипотезе о том, что большинство объектов создаются, а затем становятся недоступными в течение короткого периода времени. Таким образом, собирая мусор в пространстве, содержащем молодые объекты, вы освобождаете относительно большой объем пространства при относительно низких затратах. Вам по-прежнему нужно собирать старшие поколения, но это может происходить реже.

    (Сборщик меток и зачисток может быть поколениями, но отдача не так велика, как у копирующего коллектора.)

    Коллектор поколений - это коллектор, в котором есть несколько пространств (поколений), которые собираются с разной скоростью. Это основано на гипотезе о том, что большинство объектов создаются, а затем становятся недоступными в течение короткого периода времени. Таким образом, собирая мусор в пространстве, содержащем молодые объекты, вы освобождаете относительно большой объем пространства при относительно низких затратах. Вам по-прежнему нужно собирать старшие поколения, но это может происходить реже.

    (Сборщик меток и зачисток может быть поколениями, но отдача не так велика, как у копирующего коллектора.)

    Коллектор поколений - это коллектор, в котором есть несколько пространств (поколений), которые собираются с разной скоростью. Это основано на гипотезе о том, что большинство объектов создаются, а затем становятся недоступными в течение короткого периода времени. Таким образом, собирая мусор в пространстве, содержащем молодые объекты, вы освобождаете относительно большой объем пространства при относительно низких затратах. Вам по-прежнему нужно собирать старшие поколения, но это может происходить реже.

    (Сборщик меток и зачисток может быть поколениями, но отдача не так велика, как у копирующего коллектора.)

    вы освобождаете относительно большой объем пространства по относительно низкой цене. Вам по-прежнему необходимо собирать старшие поколения, но это может происходить реже.

    (Сборщик меток и зачисток может быть поколением, но отдача не так велика, как у копирующего коллектора.)

    вы освобождаете относительно большой объем пространства по относительно низкой цене. Вам по-прежнему необходимо собирать старшие поколения, но это может происходить реже.

    (Сборщик меток и зачисток может быть поколением, но отдача не так велика, как у копирующего коллектора.)

    31
    ответ дан 5 December 2019 в 04:38
    поделиться

    He ' s в отличие от mark-compact :

    Сборщики мусора поколений - лучший ответ, который у меня есть, потому что он сокращает паузы, и, честно говоря, сборщики мусора для всех [новых] динамических языки сегодня - дерьмо. Они используют метку и очистку или подсчитывают ссылки.

    Сборщики мусора с простой меткой и очисткой не так хороши, потому что у них есть проблема фрагментации кучи. При высоких уровнях распределения, характерных для языков с поддержкой GC, это обычно становится проблемой быстрее, чем, например, в C ++, где многие объекты просто живут в стеке.

    Тем не менее, mark-compact действительно mark & ​​sweep with уплотнение занялось этим, так что терминология могла быть лучше. Неуплотняющиеся коллекторы обычно называют «консервативными», чтобы различить их.

    Сборщики мусора поколений - лучший ответ, который у меня есть, потому что они сокращают паузы, и, честно говоря, сборщики мусора для всех [новых] динамических языков сегодня - дерьмо. Они используют метку и очистку или подсчитывают ссылки.

    Сборщики мусора с простой меткой и очисткой не так хороши, потому что у них есть проблема фрагментации кучи. При высоких уровнях распределения, характерных для языков с поддержкой GC, это обычно становится проблемой быстрее, чем, например, в C ++, где многие объекты просто живут в стеке.

    Тем не менее, mark-compact действительно mark & ​​sweep with уплотнение занялось этим, так что терминология могла быть лучше. Неуплотняющиеся коллекторы обычно называют «консервативными», чтобы различить их.

    Сборщики мусора поколений - лучший ответ, который у меня есть, потому что они сокращают паузы, и, честно говоря, сборщики мусора для всех [новых] динамических языков сегодня - дерьмо. Они используют метку и очистку или подсчитывают ссылки.

    Сборщики мусора с простой меткой и очисткой не так хороши, потому что у них есть проблема фрагментации кучи. При высоких уровнях распределения, характерных для языков с поддержкой GC, это обычно становится проблемой быстрее, чем, например, в C ++, где многие объекты просто живут в стеке.

    Тем не менее, mark-compact действительно mark & ​​sweep with уплотнение занялось этим, поэтому терминология могла быть лучше. Неуплотняющиеся коллекторы обычно называют «консервативными», чтобы различить их.

    сборщики мусора для всех [новых] динамических языков сегодня - дерьмо. Они являются метками и очищают, или они подсчитываются по ссылкам.

    Сборщики мусора с простой меткой и очисткой не так хороши, потому что у них есть проблема фрагментации кучи. С высокими уровнями распределения, обычными для языков с поддержкой GC, это обычно становится проблемой быстрее, чем, например, в C ++, где многие объекты просто живут в стеке.

    Тем не менее, mark-compact действительно mark & ​​sweep with уплотнение занялось этим, поэтому терминология могла быть лучше. Неуплотняющиеся коллекторы обычно называют «консервативными», чтобы различить их.

    сборщики мусора для всех [новых] динамических языков сегодня - дерьмо. Они являются метками и очищают, или они подсчитываются по ссылкам.

    Сборщики мусора с простой меткой и очисткой не так хороши, потому что у них есть проблема фрагментации кучи. При высоких уровнях распределения, характерных для языков с поддержкой GC, это обычно становится проблемой быстрее, чем, например, в C ++, где многие объекты просто живут в стеке.

    Тем не менее, mark-compact действительно mark & ​​sweep with уплотнение занялось этим, поэтому терминология могла быть лучше. Неуплотняющиеся коллекторы обычно называют «консервативными», чтобы различить их.

    С высокими уровнями распределения, обычными для языков с поддержкой GC, это обычно становится проблемой быстрее, чем, например, в C ++, где многие объекты просто живут в стеке.

    Тем не менее, mark-compact действительно mark & ​​sweep with уплотнение занялось этим, так что терминология могла быть лучше. Неуплотняющиеся коллекторы обычно называют «консервативными», чтобы различить их.

    При высоких уровнях распределения, характерных для языков с поддержкой GC, это обычно становится проблемой быстрее, чем, например, в C ++, где многие объекты просто живут в стеке.

    При этом mark-compact действительно mark & ​​sweep with уплотнение занялось этим, поэтому терминология могла быть лучше. Неуплотняющиеся коллекторы обычно называют «консервативными», чтобы различить их.

    5
    ответ дан 5 December 2019 в 04:38
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: