Ruby 3.4의 모듈형 가비지 컬렉터 (Modular GC)
Ruby 3.4에 도입된 실험적 기능인 모듈형 가비지 컬렉터(Modular GC)는 사용자가 요구사항에 맞춰 다양한 GC 구현체를 선택할 수 있도록 하여 성능 및 메모리 효율성을 향상시키는 것을 목표로 합니다.
Ruby 3.4의 모듈형 가비지 컬렉터 (Modular GC)
Ruby 3.4에 도입된 실험적 기능인 모듈형 가비지 컬렉터(Modular GC)는 사용자가 요구사항에 맞춰 다양한 GC 구현체를 선택할 수 있도록 하여 성능 및 메모리 효율성을 향상시키는 것을 목표로 합니다.
루비(Ruby)의 차세대 가비지 컬렉터: MMTk 통합의 도전과 해결책
호주국립대학교(ANU)와 Shopify는 Ruby에 고성능 가비지 컬렉터 프레임워크인 MMTk를 통합하여 차세대 GC를 개발 중입니다.
Я написал визуализатор сборщика мусора для Go — теперь GC не чёрный ящик
Сборщик мусора в Go обычно воспринимается как что-то, что просто работает. И это, в общем, хорошо: большую часть времени о нём действительно не хочется думать. Ровно до того момента, когда под нагрузкой сервис начинает тормозить, растут задержки и потребление памяти. В такой момент проверяешь всё подряд: CPU, метрики, сеть, pprof. И среди всего этого про сборщик мусора обычно даже не вспоминают - хотя он вполне может быть причиной просадок производительности. В Go есть встроенные инструменты, чтобы заглянуть в его работу. Проблема в том, что в реальном запуске это быстро превращается в поток строк и чисел, из которого крайне сложно понять общую картину: стал ли GC вызываться чаще, появились ли долгие паузы, растёт ли потребление памяти. Я написал gcscope — терминальный визуализатор сборщика мусора для Go. Он показывает, как ведёт себя GC в реальном времени: насколько часто он запускается, как меняется потребление памяти, есть ли моменты, когда паузы становятся заметно длиннее обычного. Работает с любым Go-приложением без правок в коде, и вы сразу видите наглядные графики вместо потока логов. А ещё можно сравнивать поведение своего сервиса до и после изменений.
https://habr.com/ru/articles/1043034/
#go #golang #gc #garbage_collector #сборщик_мусора #gogc #open_source #performance #tui
Как устроены память и Garbage Collector в CPython: разбор для Python backend interview
В Python памятью управляет не только Garbage Collector. На самом деле основа всего — reference counting , а GC лишь помогает собирать циклические ссылки. В этой статье разберём, как на самом деле устроено управление памятью в CPython : — что находится внутри PyObject — как работает ob_refcnt — почему одного reference counting недостаточно — как GC ищет циклический мусор — какие объекты вообще участвуют в сборке — и как всё это помогает искать memory leak в production Если ты готовишься к senior Python интервью или просто хочешь понимать, как Python работает под капотом , — добро пожаловать под капот CPython.
https://habr.com/ru/articles/1010390/
#python #cpython #garbage_collector #gc #memory_management #python_internals
Сборка мусора в V8: Scavenger, Mark and Sweep и Tri-color Marking
В части 1 мы выяснили, что объекты в Heap не освобождаются сами по себе этим занимается Garbage Collector. Но как именно GC решает, что можно удалить? Если подумать, задача не такая очевидная: объект не нужен - понятие логическое, а GC работает с физическим графом ссылок. Ответ в том, что GC не пытается угадать намерения программы. Он задаёт более простой вопрос: можно ли добраться до этого объекта из работающего кода? Если нельзя объект недостижим, и никакой код уже не сможет его использовать. Значит, память можно вернуть. Алгоритм, реализующий эту логику, называется Mark and Sweep .
https://habr.com/ru/articles/1003728/
#v8 #javascript #память #garbage_collector #garbage_collector_javascript #nodejs #node #алгоритмы #программирование #memory
Память в JavaScript: Stack и Heap
Последние пару лет изменили то, как пишется код. Copilot, Cursor, ChatGPT, Claude - все это генерирует вполне работающий JavaScript быстрее, чем успеваешь сформулировать задачу. Это удобно. Но у этого удобства есть обратная сторона, сгенерированный код работает правильно в смысле делает что просили , но не всегда правильно в смысле не течет по памяти и не роняет прод под нагрузкой . Модели хорошо знают синтаксис и паттерны. Они значительно хуже разбираются в том, что происходит под капотом конкретного движка. Closure, захватывающий лишние данные. Event listener, который никогда не снимается. Объект, который непреднамеренно продлевает жизнь половине DOM дерева. Все это - настоящие ошибки, которые реально встречаются в проде и ни один линтер их не поймает. Чтобы замечать такие вещи при ревью, нужно понимать, как именно V8 хранит объекты и когда решает их удалить. Это не академическое знание - это инструмент, который меняет то, на что смотришь в коде. Эта серия состоит из трех частей. Первая - про то, как V8 вообще организует память, что такое Stack и Heap, чем они отличаются и что такое pointer. Вторая - про сборщик мусора, как он определяет, что живо, а что нет и как делает это, не останавливая программу надолго. Третья - практическое применение, откуда берутся утечки памяти, как их искать и как писать код, который не создает лишней работы для GC. Смотреть под капот
https://habr.com/ru/articles/1003702/
#v8 #javascript #память #garbage_collector_javascript #stack #heap #pointer #garbage_collector #nodejs #node
Kürzlich habe ich einen Artikel gelesen, in dem es um Fragen in einem Vorstellungsgespräch als Java-Entwickler ging. Es wurden einige Fragen vorgestellt und die These aufgestellt, dass die meisten Bewerber diese Fragen nicht beantworten können. Aus diesem Grund möchte ich ...
https://magicmarcy.de/java-interview-fragen-1-java-grundlagen
#Java-Interview #Grundlagen #JDK #JRE #abstrakte_Klasse #Interface #final #finally #finalise #stack #heap #private #protected #super #Garbage_Collector #GC
Kürzlich habe ich einen Artikel gelesen, in dem es um Fragen in einem Vorstellungsgespräch als Java-Entwickler ging. Es wurden einige Fragen vorgestellt und die These aufgestellt, dass die meisten Bewerber diese Fragen nicht beantworten können. Aus diesem Grund möchte ich in dieser Serie auf diese Java Fragen im Vorstellungsgespräch eingehen und sie beantworten.
Как Python управляет памятью под капотом
В Python разработчик редко задумывается об освобождении памяти. Объекты создаются, используются и будто бы исчезают сами. Это создает ощущение, что памятью «занимается Python», и на этом можно не фокусироваться. На практике понимание того, как именно работает сборка мусора, помогает писать более стабильный, предсказуемый и эффективный код.
CPython — Сборка мусора изнутри, ч.4
Пришло время поговорить о главной функции сборщика мусора в CPython . В предыдущих частях ( 1 , 2 , 3 ) мы говорили о поколениях, инкрементальной и полной сборке мусора — но все они в итоге вызывают главную функцию, которая и реализует основной алгоритм циклического сборщика мусора — находит и разрывает циклы у объектов, которые уже вышли из использования. В первой статье на тему устройства сборщика мусора я написал, что история началась, когда я попробовал исправить ошибку в CPython . И вот, в четвёртой статье, я наконец‑то добрался до функции, в которой была ошибка. Если вам интересно, давайте посмотрим, как работает «сердце» сборщика мусора.
CPython — Сборка мусора изнутри, ч.3
В прошлых частях мы поговорили о том, как происходит регистрация объектов в сборщике мусора, о том как происходит планирование и вызов сборки мусора, что такое молодое поколение и как устроена для него сборка мусора. В этой части пришло время поговорить об инкрементальной сборке мусора - главному нововведению версии 3.14 в части сборки мусора. Поговорим, как она устроена, какие даёт преимущества и какие имеет недостатки, а также затронем полную сборку мусора. Если вам интересно, давайте попробуем разобраться.
https://habr.com/ru/articles/986784/
#gc #garbage_collector #python #cpython #reference_counting #incremental_gc