TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #2331 2.02K
На собесе по Java понимание устройства JVM и управления памятью сильно влияет на оценку. Ниже — сжатое покрытие всех 25 тем без воды.

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
  • 👍 4
  • ❤ 1
More from @java_iibrary
  1. Sep 24, 2026Java-разработчики, в чём разница между volatile и synchronized? Многие используют их. Но в…
  2. Sep 23, 2026Готовимся к System Design интервью уровня Middle и Senior Полезный конспект по проектирова…
  3. Sep 23, 2026Java-разработчики, знаете разницу между Shallow Copy и Deep Copy? Вы копируете объект, но…
  4. Sep 22, 2026Java-разработчики: Почему ArrayList увеличивает свою ёмкость примерно на 50%, когда заканч…
  5. Sep 22, 2026Прогрев от Java-бабули 🙂 👉 Java Portal
  6. Sep 21, 2026Шпаргалка по проектированию веб систем System Design 101 Подробное руководство по архитект…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →