Рубрика «garbage collector»

Давайте рассмотрим как управляют памятью два популярных языка программирования - Rust и Go.

Когда запускается программа, создается процесс с собственным адресным пространством и потоками, выполняющимися на ядрах. Процессор работает с виртуальной памятью - абстракцией, которой управляет операционная система.
Например в Go, когда мы создаем массив:

arr := make([]byte, 100)

Рантайм запрашивает диапазон виртуальных адресов, но физическая память выделяется не сразу, а при первом обращении к данным:

first := arr[0]

Запрашивая первый элемент происходит page faultЧитать полностью »

Коротко о самом главном в сборке мусора.

⚠️ Важно: это только концептуальная иллюстрация. В реальных средах исполнения JVM, .NET, Go и т.д. все сложнее!

💡 Терминология:

🔹 GC

Garbage Collector, он же сборщик мусора, чистит память от неиспользуемых объектов.

🔹 Heap (Куча)

Читать полностью »

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

Читать полностью »

Почему мы ложимся спать с багами в голове, а просыпаемся с готовым решением? Сон программиста — это не просто отдых, а своеобразная ночная компиляция опыта, где нейроны оптимизируют код нашей памяти, удаляют мусорные зависимости и иногда даже проводят рефакторинг идей. Попробуем разобраться в архитектуре этого процесса — через аналогии с компиляторами, кешами и garbage collector’ами.

Читать полностью »

Garbage Collector (GC) — одного из самых важных «невидимых помощников» в.NET.
Он избавляет нас от ручного управления памятью, но как именно?

Что такое Garbage Collection?

Читать полностью »

Работаю в финтехе на должности Java инженера. Разрабатываем highload-сервис. Прод версия нашего сервиса раскатана примерно на 150 юнитах, и она обслуживает запросы буквально со всех отделений банка.

Моя команда занимается системной разработкой. Соответственно нам приходится достаточно часто взаимодействовать командой, отвечающей за производительность системы.

Читать полностью »

Привет! Меня зовут Александр Иванов, я разрабатываю средства управления сетевыми элементами сотовой связи и пишу на языке Go в YADRO. Однажды я работал над приложением, которое испытывало пиковые нагрузки каждые 10 минут, но выполнить обработку памяти быстро мешал Garbage Collector. Чтобы решить эту проблему, я изучил несколько способов реализации memory pool и провел испытания скорости работы. 

Читать полностью »

Статью я захотел написать после работы над одним конкретным багом, который со всех точек зрения напоминал классическую утечку памяти, но на практике оказался чем то совершенно другим. Я нигде не встречал описание такого поведения и поэтому решил этой информацией поделиться.

В один прекрасный день боевое сопровождение приходит с ужасной проблемой — память в контейнерах Node.js течет, сервисы падают с OOM каждый день, все пропало!

Untitled

Читать полностью »

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

Status Quo

Большинство современных языков программирования строятся на одной из трех ссылочных моделей:

Первая категория это языки с ручным управлением временем жизни объектов. Примеры — C/C++/Zig. В этих языках объекты аллоцируются и освобождаются вручную, а указатель — это просто адрес памяти, никого ни к чему не обязывающий.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js