1. Heap vs Stack
Heap — аллокация объектов, шарится между потоками.
Stack — фреймы методов, локальные переменные, примитивы.
Объекты в heap, ссылки — в stack.
2. Сборка мусора
GC освобождает недостижимые объекты.
Сборщики: Serial, Parallel, CMS (устаревший), G1.
Объект попадает под GC при отсутствии достижимости по графу ссылок.
3. Области памяти JVM
Heap (Young/Old), Stack, Metaspace (вместо Method Area), Native Stack.
Metaspace хранит метаданные классов.
4. Алгоритмы GC
Minor GC — Young, Major/Full GC — Old.
Mark-and-Sweep, Copying, Mark-Compact.
5. Параметры JVM
-Xms, -Xmx — размер heap.-XX:NewRatio — соотношение поколений.GC-логи анализируются для поиска пауз и аллокаций.
6. Утечки памяти
Причины: статические коллекции, кеши без очистки, listener’ы.
Инструменты: VisualVM, JConsole, Eclipse MAT.
7. OutOfMemoryError
Heap overflow, Metaspace overflow, Direct memory.
Решения: тюнинг heap, профилинг, оптимизация аллокаций.
8. Типы ссылок
Soft — для кешей.
Weak — сборка при следующем GC.
Phantom — для пост-очистки.
9. ThreadLocal
Утечки из-за хранения значений без remove().
Проблема усиливается в пуле потоков.
10. finalize()
Непредсказуемый вызов, влияет на GC.
Замена — Cleaner или try-with-resources.
11. Direct Memory
Off-heap через
ByteBuffer.allocateDirect.Контроль сложнее, GC не управляет напрямую.
12. JEP по GC
ZGC (JEP 307) — низкие паузы.
Shenandoah (JEP 189) — конкурентная очистка.
13. Архитектура JVM
ClassLoader, Runtime Data Areas, Execution Engine, JNI.
14. Загрузка классов
Loading → Linking → Initialization.
Загрузчики: Bootstrap, Platform (бывш. Extension), System.
15. Байткод
Инструкции JVM, стековая модель исполнения.
Интерпретируется и оптимизируется JIT.
16. JIT-компилятор
Горячий код компилируется в машинный.
Оптимизации: инлайнинг, удаление мертвого кода.
17. Структура .class
Magic number, constant pool, методы, атрибуты.
18. Жизненный цикл потоков
NEW → RUNNABLE → BLOCKED/WAITING → TERMINATED.
JVM управляет планированием через ОС.
19. JNI
Связка с нативным кодом (C/C++).
Используется для low-level операций.
20. Профилинг JVM
CPU, память, потоки.
Инструменты: VisualVM, JConsole.
21. HotSpot
Основная реализация JVM.
Использует адаптивную оптимизацию и JIT.
22. Манипуляция байткодом
ASM, BCEL, Javassist.
Применяется в прокси, AOP, фреймворках.
23. Инструменты диагностики
jstack — дамп потоков.
jmap — heap dump.
jstat — статистика GC.
24. Безопасность классов
Верификация байткода.
Security Manager (устаревший, но концепт важен).
25. Java Memory Model (JMM)
Правила видимости и happens-before.
Ключевые примитивы: volatile, synchronized.
👉 Java Portal