Сборка по принципу "все-или-ничего"
Сборка по принципу "все-или-ничего"
Когда нужно приводить в действие сборщик мусора?
Классические сборщики мусора активизируются по требованию и работают до завершения. Другими словами, сборщик мусора не работает, пока остается память для работы приложения. Как только ее не хватает, приложение запускает полный цикл сборки мусора - фаза пометки и следом фаза чистки.
Эта техника может быть названа "все-или-ничего". Преимущество ее в том, что она не вызывает перегрузки пока достаточно памяти. Когда программа выходит за пределы достижимых ресурсов, в наказание вызывается сборщик мусора.
Но сборка мусора по принципу "все-или-ничего" имеет серьезный недостаток: полный цикл пометки-чистки может занять много времени - особенно в среде виртуальной памяти, большое пространство виртуальных адресов которого сборщик мусора должен обойти полностью, прерывая на это время выполнение приложения.
Для пакетных приложений такая схема еще может быть приемлема. Но и здесь при высоком коэффициенте отношения виртуальной памяти к реальной перегрузка может стать причиной серьезной потери производительности, если система создает большое число объектов, лишь малая часть из которых является в каждый момент достижимыми.
Сборка мусора по принципу "все-или-ничего" не будет работать для интерактивных систем или систем реального времени. Представим систему обнаружения ракетного нападения, которая имеет 50-миллисекундный интервал для реагирования на запуск ракеты. Допустим, программа прекрасно работала, пока система не вышла за пределы памяти, но, к несчастью это событие произошло в момент запуска ракеты, когда вместо системы начал свою работу неспешный сборщик мусора.
Даже в менее жизненно важных приложениях, таких как интерактивные системы, неприятно использовать инструмент, например, редактор текста, который иногда непредсказуемо зависает на 10 минут, потому что у него начался цикл сборки мусора.
В таких случаях проблема заключается не в глобальном эффекте временных потерь, связанных со сборкой мусора: определенная потеря производительности может быть вполне допустимой для разработчиков и пользователей, как плата за надежность и удобство, предоставляемое автоматической сборкой мусора. Но временные потери должны быть равномерно распределены. Неприемлемы непредсказуемые всплески активности сборщика мусора. Лучше черепаха, чем заяц, время от времени без предупреждения засыпающий на полчаса. Подсчет ссылок, если бы не его фатальный порок, удовлетворял бы лозунгу: "лучше ехать медленно, но с постоянной скоростью, чем быстро, но с неожиданными и непредсказуемыми остановками".
Конечно, временные потери должны быть не только постоянными, но и небольшими. Если приложение без сборщика мусора - заяц, никто не согласится заменить его черепахой. Хороший сборщик мусора должен обеспечивать задержку, не превышающую 5-15%. Хотя некоторые скажут, что и это неприемлемо, я знаю совсем немного приложений, которым нужны меньшие издержки. Необходимо учитывать также, что в отсутствии сборщика мусора потребуется ручная утилизация, также не обходящаяся без издержек. Несмотря на все издержки, сборка мусора необходима.
В ходе обсуждения выявлены две дополнительные проблемы эффективности работы сборщика мусора: производительность глобальная (overall performance) и в стартстопном режиме (incrementality).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Контроль качества не должен ничего обнаружить
Контроль качества не должен ничего обнаружить Когда вы передаете окончательную версию продукта в службу контроля качества, вы должны рассчитывать на то, что контроль не выявит никаких проблем. Было бы в высшей степени непрофессионально передавать на контроль качества
(7.15) Ничего не получается с hackmon.inf, чего делать?
(7.15) Ничего не получается с hackmon.inf, чего делать? Если hackmon.inf у Вас по какой то причине не работает, то можно попробовать отредактировать соответствующие значения реестра вручную. Для этого заходите в HKEY_LOCAL_MACHINESYSTEMControlSetEnumDISPLAY, и дальше на две папки вглубь (их название зависит
3.6. По какому принципу XP присваивает буквы дискам?
3.6. По какому принципу XP присваивает буквы дискам? В порядке подключения. Системному диску обычно присваивается название С: и изменить его сложно. После него идут все жёсткие диски, которые найдены в процессе инсталляции, потом CD-ROM’ы, и так далее. Но, если диск подключается
6.5. Ничего не получается с hackmon.inf, чего делать?
6.5. Ничего не получается с hackmon.inf, чего делать? Если hackmon.inf у вас по какой то причине не работает, то можно попробовать отредактировать соответствующие значения реестра вручную. Для этого заходите в HKEY_LOCAL_MACHINE SYSTEM ControlSet Enum DISPLAY, и дальше на две папки вглубь (их название
Здесь нет ничего сложного!
Здесь нет ничего сложного! Затем я думал, что причина в том, что мы не генерировали очень хороший объектный код. Те из вас, кто следовали этой серии и пытались компилировать примеры, знают, что хотя код работает и достаточно отказоустойчив, его эффективность довольно
ПИСЬМОНОСЕЦ: Если уж совсем ничего не получается…
ПИСЬМОНОСЕЦ: Если уж совсем ничего не получается… Автор: Илья ЩуровУважаемая редакция, читаю журнал с запозданием, поэтому, возможно, моя реплика и несвоевременна. В "КТ" #20 Евгений Козловский жалуется на проблемы с GPRS-роумингом у МТС, которые довели автора до смены
Ничего никому не скажу?
Ничего никому не скажу? Первым нагнулся к уху головы сам дон Антоньо; он спросил ее тихо, но так, однако же, что все его услышали: - Заклинаю тебя, голова, волшебною силою, в тебе заключенною: скажи мне, какие у меня сейчас мысли? И голова, не разжимая губ, ясно и отчетливо, так,
Нет ничего проще Герман Царев
Нет ничего проще Герман Царев Опубликовано 24 июня 2010 года Орфография и пунктуация автора сохранены. — прим. ред. Наверное, каждый человек, занимающийся разработкой программного обеспечения, когда-либо сталкивался с задачей обработки больших
Ничего кроме правды
Ничего кроме правды Сила спецификаций АТД проистекает из их способности отражать только существенные свойства структур данных без лишних деталей. Приведенная выше спецификация стеков выражает все, что нужно по существу знать о понятии стека, и не включает ничего, что
Вы ничего не понимаете в компьютерах?
Вы ничего не понимаете в компьютерах? Чтобы устранять неисправности, вам нужно хотя бы ориентироваться в наименованиях и назначении комплектующих. Если вы не называете системный блок «процессором» или, что еще хуже, «железным ящиком» и можете отличить жесткий диск от
Ещё одна «ничего не стоящая» информация
Ещё одна «ничего не стоящая» информация Помимо номера расчётного центра и внутренних номеров, какая еще, по-видимому, бесполезная информация может быть чрезвычайно ценной для вашего врага?Телефонный звонок Питера Абеля«Привет», сказал человек на другом конце линии.
Еnergy harvesting: энергия из ничего Олег Нечай
Еnergy harvesting: энергия из ничего Олег Нечай Опубликовано 24 апреля 2013Мы все с интересом обсуждаем одежду со встроенными датчиками и пультами управления, кроссовки с шагомером, GPS и прочую носимую электронику. Однако стоит задаться вопросом: а от чего, собственно, должны
Тот, кто ничего не знает, думает о Google
Тот, кто ничего не знает, думает о Google Идея этого теста проста: если кто-то, будучи занят определенным вопросом, не поддающимся немедленному решению, думает об Интернете или поисковой машине Google, то понятия «Google» или «Интернет» будут неизбежно мысленно активизированы. Эта
Александр Амзин: Ничего не изменилось
Александр Амзин: Ничего не изменилось Автор: Александр АмзинОпубликовано 07 сентября 2011 годаКогда-нибудь мы полетим на Марс, освоим луны Юпитера и споём на два голоса с сиренами Титана. Космический корабль "Сид Мейер" устремится к Альфе Центавра; судно с замороженным