#garbage_collector — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #garbage_collector, aggregated by home.social.
-
Сборщик мусора в Dart. Часть 2: поколения и scavenge
В первой части мы разобрались как Dart отличает число от объекта. Эти знания нам пригодятся, чтобы разобраться в дальнейших хитростях сборщика. Перед нами стоит самый главный вопрос: А как сборщик все-таки за собой убирает? Молодое и старое поколение. Что происходит в обычном build() у Flutter-виджета? За один кадр создается куча временных объектов: EdgeInsets, Padding, промежуточные TextStyle, какие-то списки, замыкания. Живут они до следующего ребилда(Не учитывая const). Также у нас есть и другая категория объектов, которые живут долго: синглтоны, кэши, репозитории, состояние приложения. Они создаются один раз и живут все время работы. Отсюда вывод, если молодые объекты пересоздаются пачками, а старые в основном живут, то убирать их одинаково не выгодно. Именно поэтому Dart делит кучу на 2 поколения...
https://habr.com/ru/articles/1066560/
#Dart #Flutter #сборка_мусора #garbage_collector #gc #управление_паматью #dart_vm #scavenge #поколение #newspace
-
Green Tea GC: что на самом деле поменялось в сборщике мусора Go 1.26
С весны на собесах стабильно спрашивают про Green Tea. И ответ, который я слышу в девяти случаях из десяти, звучит так: «ну, он на 40% быстрее». Дальше начинаешь уточнять — быстрее что? — и человек плывёт. Проценты там действительно есть. Просто относятся они не к тому, о чём все думают.
https://habr.com/ru/articles/1063470/
#golang #go #garbage_collector #сборка_мусора #green_tea_gc #go_126 #производительность #runtime #оптимизация #память
-
Сборщик мусора в Dart. Часть 1: память и указатели
Про сборщик мусора сейчас почти не говорят, но я часто слышу от коллег, что на собеседованиях про него спрашивают. Ещё заметил, что это один из популярных вопросов. Нормальных статей или обзоров про это почти нет, а если и есть, то они тяжёлые и очень нагруженные технической частью, которую понимают только сами создатели статей. Эта статья — моя попытка объяснить вам доходчивым языком, что же такое Garbage Collector в Dart, объяснить почему эти некоторые знания нам нужны на практике и что из всей этой тяжелой, технической внутрянки вам необходимо знать.
https://habr.com/ru/articles/1054356/
#Dart #Flutter #сборка_мусора #garbage_collector #GC #управление_памятью #указатели #Smi #tagged_pointers #Dart_VM
-
Я написал визуализатор сборщика мусора для 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
-
Как 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
-
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 ...
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 ...
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 ...
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
-
Rust vs Go: управление памятью
Давайте рассмотрим как управляют памятью два популярных языка программирования — Rust и Go. Когда запускается программа, создается процесс с собственным адресным пространством и потоками, выполняющимися на ядрах. Процессор работает с виртуальной памятью — абстракцией, которой управляет операционная система. Например в Go, когда мы создаем массив
-
Как переход на Z Garbage Collector в Java 17 сэкономил нам ресурсы: на примере хранилища артефактов
Привет, Хабр! Меня зовут Максим Шишкин, я инженер по нагрузочному тестированию в команде Platform V Works::Artifactory в СберТехе. Наше решение — менеджер репозиториев артефактов и контейнеров. Он позволяет организовать хранение, описание, тегирование сборок и дистрибутивов программных продуктов, а также готовых Docker-контейнеров. В этой статье я расскажу, как и почему мы перешли на Java 17, как протестировали возможности нового сборщика мусора Z Garbage Collector и в результате сэкономили ресурсы виртуальных машин — а вместе с этим и финансы. Надеюсь, наш опыт будет полезен инженерам по сопровождению, командам разработки и тестирования.
https://habr.com/ru/companies/sberbank/articles/972476/
#сбертех #platform_v #platform_v_works #artifactory #java #тестирование #сборщик_мусора #garbage_collector
-
JVM + Память + GC без боли: моя шпаргалка для собесов в Java. Часть 2
Всем привет! Работая Senior Java Developer в одном из банков, я успел пройти уйму собеседований, столкнуться с десятками каверзных вопросов и понять, сколько усилий требует подготовка. И каждый раз убеждаюсь в одном: тема JVM, память и GC — одна из самых недооценённых и одновременно самых частых на Java-собесах. Многие знают об этом “что-то где-то слышал”, но как только разговор заходит про Heap, Metaspace, JIT, Safepoint или разные типы GC — начинаются проблемы. Поэтому эта статья — вторая часть моей шпаргалки по подготовке к Java-собеседованиям . Здесь я собрал всё самое важное о работе JVM и управлении памятью простым, человеческим языком, без боли и академической зауми. Разберём архитектуру JVM, устройство памяти, JIT, GC, типы ссылок и самые частые вопросы, которые любят спрашивать на интервью. В профиле уже есть первая часть для подготовки - Многопоточность без боли
https://habr.com/ru/articles/967190/
#java #kotlin #garbage #garbage_collector #собеседование #собеседование_вопросы #собеседование_в_it #memory #jvm
-
[Перевод] Green Tea: новый экспериментальный сборщик мусора в Go
Команда Go for Devs подготовила перевод статьи о новом экспериментальном сборщике мусора Green Tea, появившемся в Go 1.25. Он уже используется в Google и показывает снижение затрат CPU на GC до 40%. Разбираемся, почему это не просто оптимизация, а новый уровень эффективности.
-
Как JavaScript справляется с DOM-подобными структурами данных
Это вторая статья в серии о поддержке DOM-подобных моделей в различных языках программирования. Сегодня мы рассмотрим как JavaScript справляется с бенчмарком Card DOM.
https://habr.com/ru/articles/956542/
#programming_languages #benchmark #javascript #garbage_collector #data_structures
-
[Перевод] Сборщик мусора в Go. Часть 2: GC Traces
Команда Go for Devs подготовила перевод статьи о том, как оптимизация аллокаций в Go может снизить нагрузку на сборщик мусора и ускорить приложение почти в два раза. Автор показывает на примере реального веб-приложения, как профилировать кучу, находить «горячие» места и убирать лишние аллокации, чтобы снизить задержки и повысить пропускную способность.
https://habr.com/ru/articles/948864/
#go #garbage_collector #gc #профилирование #pprof #оптимизация #аллокаций #производительность #heap #strings
-
Как GC останавливает весь мир, чтобы вынести мусор
Как GC останавливает весь "мир", чтобы "вынести мусор"! Концептуальное описание работы GC в Ваших приложениях. 🔴 Что такое Stop-The-World 📍 Зачем нужны SafePoints 🧩 Что делает функция GC_POLL() 🧹 Что делает GC и почему GC иногда останавливает весь "мир"... Узнать о сборке мусора чуть больше
https://habr.com/ru/articles/950082/
#gc #c# #net #java #garbage_collector #garbage_collection #swift #kotlin #go #scala
-
[Перевод] Сборщик мусора в Go. Часть 1: Stop The World, пейсинг и оптимизация
Команда Go for Devs подготовила перевод статьи о том, как работает сборщик мусора в Go. Автор подробно объясняет семантику алгоритма триколорной маркировки и очистки, механизмы Stop The World, пейсинг и источники задержек. Главное — не бороться со сборщиком, а работать с ним в унисон: устранять лишние выделения и снижать нагрузку на кучу.
-
Как работает память: что происходит в мозге, когда мы забываем пароль от Wi-Fi
Когда мозг отказывается вспомнить пароль от Wi-Fi, это не просто досадная мелочь. За этой банальной ситуацией стоят сложнейшие механизмы памяти, работы нейронных сетей и биохимических процессов. В статье я попробую объяснить, почему мы забываем такие вещи, что реально происходит в мозге и как это можно смоделировать в коде.
https://habr.com/ru/articles/946536/
#память #мозг #нейроны #забывчивость #долговременная_потенциация #garbage_collector #spaced_repetition #когнитивные_науки #биохимия #нейросети
-
[Перевод] Оптимизация памяти в Go: 20 приёмов для эффективных приложений
Команда Go for Devs подготовила перевод статьи о том, как оптимизировать использование памяти в Go-приложениях. Автор делится двадцатью приёмами — от выбора ресивера метода и правильной инициализации slice до кастомного управления памятью и профилирования с pprof . TL;DR: мелкие улучшения складываются в заметный прирост производительности и стабильности.
https://habr.com/ru/articles/943664/
#go #golang #оптимизация_памяти #garbage_collector #профилирование #производительность
-
Оптимизация Unity-сцены: от Profiler до Object Pooling. Убираем лаги шаг за шагом
Твоя игра на Unity тормозит? В этой статье гайд о том, как поднять FPS с 30 до 60+. Мы вместе разберем Profiler, GC, Object Pooling и другие "болевые точки".
https://habr.com/ru/articles/942754/
#оптимизация #производительность #unity #c# #fps #profiler #garbage_collector #draw_calls #просто_о_сложном
-
Оптимизация Django под высокие нагрузки: как мы ускорили ответы сервиса с помощью кэша, SIMD и настройки GC
За более чем 10 лет в разработке я не раз сталкивался с проблемой недостаточной производительности сервисов. Особенно это заметно на Python – отличном языке для быстрого старта, с множеством библиотек и фреймворков. Однако, когда проект растёт, его производительности начинает не хватать, и проблемы с задержками превращаются в угрозу стабильности и пользовательскому опыту. В этом руководстве я поделюсь практическими решениями, основанными на реальных кейсах, чтобы помочь вам оптимизировать Django-сервис и значительно сократить время ответа на запросы.
https://habr.com/ru/articles/941336/
#оптимизация #кэширование #simd #json #django #garbage_collector #написаночеловеком
-
CPython — сборка мусора изнутри, ч.1
Как то раз я попал на вечеринку опенсорсеров и там обсуждали очередной баг связанный со сборщиком мусора в CPython. И так получилось, что я попробовал баг исправить, нашел причину проблемы и сделал два реквеста. И если первый реквест был просто не правильный, то второй не прошел проверку качества со стороны владельцев кода. И после этого решил основательно разобраться с тем, как устроена сборка мусора в современном CPython. Если вам интересно, давайте попробуем разобраться вместе.
-
Архитектура сна программиста: как мозг компилирует дневной опыт ночью
Почему мы ложимся спать с багами в голове, а просыпаемся с готовым решением? Сон программиста — это не просто отдых, а своеобразная ночная компиляция опыта, где нейроны оптимизируют код нашей памяти, удаляют мусорные зависимости и иногда даже проводят рефакторинг идей. Попробуем разобраться в архитектуре этого процесса — через аналогии с компиляторами, кешами и garbage collector’ами.
https://habr.com/ru/articles/937944/
#сон #мозг #программист #компиляция #память #garbage_collector #REM #оптимизация #нейронаука #код
-
@wingo Why don't you bring the ownership model or ORO (One Reference Only) that newLisp offers to guile and replace garbage collection?
https://www.newlisp.org/MemoryManagement.html
I know it's a big deal, but it would be better to act early to get the benefits.
NewLisp did this by keeping the "dynamic type" feature. -
Java Highload и сборка мусора
Разработка HL-решения со строгим SLA по RPS и latency затрагивает множество аспектов. В частности OLTP, мультиплексирование запросов, неблокирующий I/O и прочее. В данной статье хотел бы поговорить про сборку мусора. Мы не будем погружаться в цитирование спецификации. Напротив, взглянем на сборку глазами инженера, перед которым стоит задача оптимизировать процесс с минимальными издержками.
https://habr.com/ru/articles/912550/
#java #highload #garbage_collector #shenandoah #zgc #g1gc #финтех #performance #concurrent_mark_sweep #jdk
-
[Перевод] Глубокое погружение в процедуру запуска JVM
Новый перевод от команды Spring АйО расскажет вам, что происходит при запуске самого простого приложения на Java, какие шаги выполняет JVM, сколько классов ей необходимо загрузить, чтобы просто написать “Hello World!” и как все это выглядит на уровне byte code.
https://habr.com/ru/companies/spring_aio/articles/881128/
#java #startup #jvm #byte_code #garbage_collector #method_area #cds #loading #linking #initialization
-
Как рождаются, живут и умирают горутины
Вы когда-нибудь, глядя на горутину, думали, что у неё под капотом? Я вот решил посмотреть. И сегодня расскажу о том, как рантайм Go создаёт и управляет горутинами, о статусах, которые у них есть, и некоторых хитростях, к которым прибегают создатели языка.
https://habr.com/ru/companies/ozonbank/articles/877242/
#go #runtime #garbage_collector #goroutine #internal #golang #source_code