Память JVM разделена на две основные области: heap и stack В stack находятся данные локальных переменных и информация о вызовах функций Организация stack основана на принципе LIFO, поэтому доступ к данным происходит…
Массивы размещаются в непрерывной области памяти: их размер фиксирован, а элементы находятся последовательно Срез представляет собой структуру-обёртку, содержащую указатель на массив, длину и capacity Capacity — это…
определяется используемым языком и типом данных по значению: функция получает копию данных (примитивные типы в C, Java, Python) по ссылке: передаётся адрес объекта (объекты в C++, Java, Python) комбинированная модель:…
Формула и максимум для 32-битного Int тип: знаковое 32-битное целое число — signed int битовая структура: 1 бит предназначен для знака, а 31 бит — для значения диапазон значений: от −2³¹ до 2³¹−1 формула максимального…
Устройство String: почему обращение по индексу неоднозначно? В большинстве современных языков String — это последовательность символов, однако способ её внутреннего представления может отличаться. При использовании…
память разделяется между стеком и кучей стек принадлежит конкретному потоку и содержит его локальные переменные и вызовы функций при многопоточном выполнении каждый поток использует собственный независимый стек,…
Инструменты диагностики производительности Профилировщики CPU и памяти помогают находить узкие места в программном коде, оценивать расход ресурсов и определять горячие точки. К таким инструментам относятся perf,…
Какие области памяти есть кроме стека и кучи Data (Data Segment) — сегмент для глобальных и статических переменных, который создаётся во время загрузки программы BSS (Block Started by Symbol) — часть Data Segment,…
Какие операции и функции безопасны для nil-среза в Go? Context: Go, срезы (slice) nil-срез — срез со значением nil и нулевой длиной Методы (функции) для срезов — как правило, это функции пакета sort, append и операции…
Ошибки при работе с памятью Утечки памяти — ресурсы не освобождаются, из-за чего потребление памяти постоянно растёт Двойное освобождение — повторный вызов free/ delete приводит к неопределённому поведению…