На senior интервью по Python почти никогда не хватает ответа уровня «в Python есть reference counting и иногда запускается GC». Обычно хотят понять, знаешь ли ты механизм времени жизни объекта в CPython, понимаешь ли разницу между reference counting и cyclic GC, умеешь ли объяснить, почему Python процесс может расти по RSS даже без «классической утечки», можешь ли диагностировать это в production. В актуальном CPython важно еще что модель GC изменилась: начиная с Python 3.14, generation 1 удалено, threshold2 игнорируется, а сборщик циклов стал incremental с моделью young/old, хотя на интервью до сих пор часто спрашивают старую схему 0/1/2.
Рубрика «memory management»
Как устроены память и Garbage Collector в CPython: разбор для Python backend interview
2026-03-15 в 8:16, admin, рубрики: cpython, garbage collector, gc, memory management, python, python internalsТри вечера, три круга ада и один MVP: как я создал анализатор памяти игры с помощью бесплатных чат-моделей
2026-01-17 в 19:15, admin, рубрики: AI, cheat engine, memory management, python, Royal Quest, памятьОглавление
1. Введение
Приветствую!
Весь год мы слушали об использовании ИИ для разработки программного обеспечения. Постоянно попадается реклама обещающая сделать все за тебя. ВЦИОМ рапортует что каждый второй (51%)Читать полностью »
Как понять Unity3d, если ты .NET разработчик
2025-01-02 в 20:42, admin, рубрики: C#, Gamedev, gamedevelopment, memory management, performance, performance optimization, unity, unity туториал, unity уроки, unity3dOSDEV: Разработка аллокатора на С++ часть 1. Неявный список свободных блоков с граничными тегами
2024-11-24 в 11:16, admin, рубрики: memory allocation, memory managementДоброго времени суток.
При разработке ОС на с++ мы сталкиваемся с рядом трудностей, таких как отсутствие стандартной библиотеки и ABI с++ и прочее в этом духе. При чем перед реализацией PageAllocator и прочих аппаратных механизмов хотелось бы иметь какую то стандартную библиотеку позволяющую делать хоть что то. Об этом и пойдет речь.
Далее я расскажу о своем опыте разработки таких алгоритмов для своей ОС и о том, как их тестировать у себя на своей рабочей системе с юнит тестами и прочим, прикручивая в итоговую демку проверенный тестами код, и начну я с аллокатора.
Речь пойдет о немного переделанном алгоритме Кнута Читать полностью »
ArrayPool<T>: подводные камни
2023-03-30 в 15:04, admin, рубрики: .net, C#, memory management, pool, pooling, высокая производительность, Программирование
Автоматическая сборка мусора упрощает разработку программ, избавляя от необходимости отслеживать жизненный цикл объектов и удалять их вручную. Однако, чтобы сборщик мусора был полезным инструментом, а не главным врагом на пути к высокой производительности — иногда имеет смысл помогать ему, оптимизируя частые аллокации и аллокации больших объектов.
Для уменьшения аллокаций в современном .NET предусмотрены Span/Memory<T>, stackalloc с поддержкой Span, структуры и другие средства. Но если без объекта в куче не обойтись, например, если объект слишком большой для стека, или используется в асинхронном коде — этот объект можно переиспользовать. И для самых крупных объектов — массивов, в .NET встроены несколько реализаций ArrayPool<T>.
В этой статье я расскажу о внутреннем устройстве реализаций ArrayPool<T> в .NET, о подводных камнях, которые могут сделать пулинг неэффективным, о concurrent-структурах данных, а также о пулинге объектов, отличных от массивов.
Пишем на С++ вектор, умеющий расширяться без копирования элементов
2022-11-26 в 14:44, admin, рубрики: c++, linux, memory management, mmap, vector, ненормальное программирование, системное программированиеВ языке С есть функции malloc, free и reallocЧитать полностью »
Книга «Управление памятью в .NET для профессионалов» в правильном переводе команды DotNetRu
2020-04-24 в 14:12, admin, рубрики: .net, book, C#, DotNetRu, kokosa, memory managementСовсем недавно в издательстве ДМК-пресс на русском языке вышла замечательная книга Конрада Кокосы «Управление памятью в .NET для профессионалов».
Это издание примечательно тем, что в переводе участвовали не только люди со стороны издательства, но и члены сообщества DotNet.Ru, практикующие разработчики, для которых эта книга действительно актуальна.
Под катом история о том, зачем мы в это ввязались, как был организован процесс и с какими трудностями мы столкнулись.
Разбираемся с управлением памятью в современных языках программирования
2020-02-21 в 10:54, admin, рубрики: computer science, memory leaks, memory management, ПрограммированиеПривет! Представляю вашему вниманию перевод статьи «Demystifying memory management in modern programming languages» за авторством Deepu K Sasidharan.
В данной серии статей мне бы хотелось развеять завесу мистики над управлением памятью в программном обеспечении (далее по тексту — ПО) и подробно рассмотреть возможности, предоставляемые современными языками программирования. Надеюсь, что мои статьи помогут читателю заглянуть под капот этих языков и узнать для себя нечто новое.
Углублённое изучение концептов управления памятью позволяет писать более эффективное ПО, потому как стиль и практики кодирования оказывают большое влияние на принципы выделения памяти для нужд программы.
Читать полностью »
Еще немного о неправильном тестировании
2020-02-06 в 10:44, admin, рубрики: linux, memory management, performance testing, ramОднажды мне случайно попался на глаза код, которым пользователь пытался мониторить производительность RAM в своей виртуальной машине. Код этот я приводить не буду (там «портянка») и оставлю только самое существенное. Итак, кот в студии!
Читать полностью »
Декларативное управление памятью
2019-10-04 в 11:06, admin, рубрики: C, memory management, Rust, управление памятью(достаточно вольный перевод огромной эмоциональной статьи, которая на практике наводит мосты между возможностями Си и Rust в плане решения бизнес-задач и разрешение багов, связанных с ручным управлением памятью. Также должно быть полезно и людям с опытом сборки мусора — отличий в плане семантики намного меньше, чем может показаться — прим.пер.)
С момента, когда я заинтересовался Rust, прошла будто целая вечность. Тем не менее я отчетливо помню знакомство с анализатором заимствований (borrow checker, далее — БЧ — прим.пер.), сопровождаемое головной болью и отчаянием. Разумеется я не один такой страдающий — статей в интернете на тему общения с БЧ предостаточно. Однако я хотел бы выделиться и осветить в данной статье БЧ с точки зрения практической пользы, а не только лишь генератора головной боли.
Периодически мной встречаются мнения, что в Rust — ручное управление памятью (вероятно, раз не автоматическое с GC, тогда какое же еще? — прим.пер.), однако я совершенно не разделяю данную точку зрения. Способ, примененный в Rust, я называю термином "декларативное управление памятью". Почему так — сейчас покажу.


