Я решил написать эту статью в первую очередь для себя, потому что перечитал кучу материалов про сборщик мусора (GC) в Go, и почти все они были слишком сложными. Моя цель — объяснить, как работает GC, что такое инкрементальность и барьер записи, так, чтобы я сам понял и запомнил и, возможно, стал полезным для других. А чтобы было веселее, я добавил гофера — маскота Go — в забавных иллюстрациях, которые помогут визуализировать идеи. Если вы, как и я, хотите разобраться в GC без лишней головной боли, эта статья для вас!
Рубрика «сборщик мусора»
Разбираемся в сборщике мусора Go: просто и с гофером
2025-06-30 в 11:23, admin, рубрики: Garbage collection, gc, Go, golang, сборщик мусораУправление временем жизни объектов: почему это важно и почему для этого пришлось создать новый язык «Аргентум»
2023-07-23 в 12:47, admin, рубрики: garbage collector, memory safety, programming language, Компиляторы, Программирование, сборщик мусора, язык программированияВ основе любого современного языка программирования лежит какая-то ссылочная модель, описывающая структуры данных которыми будут оперировать приложения. Она определяет как объекты ссылаются друг на друга, в какой момент объект можно удалить, когда и как объект можно изменять.
Status Quo
Большинство современных языков программирования строятся на одной из трех ссылочных моделей:
Первая категория это языки с ручным управлением временем жизни объектов. Примеры — C/C++/Zig. В этих языках объекты аллоцируются и освобождаются вручную, а указатель — это просто адрес памяти, никого ни к чему не обязывающий.
Управление памятью в PHP. Сборка мусора, слабые ссылки и прочая челядь
2023-07-22 в 12:56, admin, рубрики: Garbage collection, garbage collector, php, Программирование, сборка мусора, сборщик мусора, Серверная оптимизацияСодержание
-
Введенние.
-
Zval.
-
Циклические ссылки.
-
Сборщик мусора.
-
Алгоритм работы сборщика мусора.
-
Смотрим глазами.
-
Слабые ссылки.
-
Бонус-трэк: WeakMap.
-
Заключение.
Введенние
В PHP память для всех наших переменных выделяется динамическиЧитать полностью »
Собеседования джунов — вся жесть вопроса
2021-12-17 в 15:55, admin, рубрики: .net, C#, Алгоритмы, бинарные деревья, джуны, интервью, Карьера в IT-индустрии, неадекват, Программирование, сборщик мусора, собеседованиеПосле 2-х лет разработчиком на С# в небольшой английской компании в сфере строительства, я решил выяснить свою стоимость как специалиста на рынке труда Великобритании. Несмотря на то, что большинство вакансий представляют собой примерно одно и то же: «Требуется человек-оркестр с 10+ лет опыта для очень интересной работы», — я специально выбирал позиции исключительно младшего разработчика не содержащих цифр 5+, 10+ и 15+ в описании. Как это было — читайте дальше.
Всё, что нужно знать о сборщике мусора в Python
2018-07-20 в 9:16, admin, рубрики: Garbage collection, gc, python, память в python, Программирование, сборщик мусораКак правило, вам не нужно беспокоиться о сборщике мусора и работе с памятью когда вы пишите код на Python. Как только объекты больше не нужны, Python автоматически освобождает память из под них. Несмотря на это, понимание как работает GC поможет писать более качественный код.
Менеджер памяти
В отличие от других популярных языков, Python не освобождает всю память обратно операционной системе как только он удаляет какой либо объект. Вместо этого, он использует дополнительный менеджер памяти, предназначенный для маленьких объектов (размер которых меньше чем 512 байт). Для работы с такими объектами он выделяет большие блоки памяти, в которых в дальнейшем будет хранится множество маленьких объектов.
Как только один из маленьких объект удаляется — память из под него не переходит операционной системе, Python оставляет её для новых объектов с таким же размером. Если в одном из выделенных блоков памяти не осталось объектов, то Python может высвободить его операционной системе. Как правило, высвобождение блоков случается когда скрипт создает множество временных объектов.
Читать полностью »
Понимание сборки мусора и отлов утечек памяти в Node.js
2016-02-12 в 12:37, admin, рубрики: javascript, JS, node.js, Блог компании Plarium, игры, перевод, Программирование, разработка, сборщик мусораПлохие отзывы в прессе о Node.js часто относятся к проблемам с производительностью. Это не значит, что с Node.js больше проблем, чем с другими технологиями. Просто пользователь должен иметь в виду некоторые особенности её работы. Хотя у технологии пологая кривая обучения, обеспечивающие её работу механизмы довольно сложные. Необходимо понять их, чтобы предотвратить появление ошибок производительности. И если что-то пойдет не так, необходимо знать, как быстро привести всё в порядок. В этой статье Даниэль Хан рассказывает о том, как Node.js управляет памятью и как отследить связанные с памятью проблемы.
В Firefox 16 заработает инкрементальный сборщик мусора
2012-09-05 в 11:33, admin, рубрики: Firefox, Firefox 16, Garbage collection, javascript, Веб-разработка, производительность javascript, сборка мусора, сборщик мусора, метки: Firefox 16, Garbage collection, производительность javascript, сборка мусора, сборщик мусора 16-я версия браузера Firefox, релиз которй намечен на 9 октября, содержит серьёзное обновление движка JavaScript. Сборщик мусора перейдёт от стратегии «stop-the-world», когда на время уборки полностью замораживается работа скриптов, к инкрементальной стратегии, когда сборка мусора происходит в несколько этапов. Хотя в целом работа сборщика мусора будет отнимать немного больше времени, отзывчивость браузера существенно улучшится, так как элементы интерфейса, анимация и игры не будут больше подвисать на несколько сотен миллисекунд на время уборки.
Читать полностью »
Ускорение в 3,7 раза после удаления Sleep() в WebKit
2012-09-03 в 8:26, admin, рубрики: safari, sleep, webkit, сборщик мусора, Совершенный код, спинлок, метки: safari, sleep, webkit, сборщик мусора, спинлокДжофф Гарен (Geoff Garen) из компании Apple обнаружил вызов Sleep() в спинлоке функции TCMalloc сборщика мусора WebKit.
-#if OS(WINDOWS)
- Sleep(2);
-#else
- struct timespec tm;
- tm.tv_sec = 0;
- tm.tv_nsec = 2000001;
- nanosleep(&tm, NULL);
-#endif
После удаления Sleep производительность сборщика в определённых условиях выросла в 3,7 раза. Это наглядный пример, как одна маленькая оптимизация способна и уменьшить размер кода, и одновременно в несколько раз повысить производительность.
Читать полностью »

