TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #913 3.46K
🤔 Расскажи про области памяти и Garbage Collector?

🟠Heap (Куча)
Используется для динамического распределения памяти всех объектов и массивов. Разделена на молодое поколение (Young Generation) и старое поколение (Old Generation).
🟠Young Generation
Eden Space: Новые объекты сначала создаются здесь. Survivor Spaces (S0 и S1): Объекты, которые пережили сборку мусора в Eden Space, перемещаются сюда.
🟠Old Generation
Содержит долгоживущие объекты, которые пережили несколько сборок мусора в Young Generation.
🟠PermGen (Permanent Generation)
Используется для хранения метаданных классов и методов. В Java 8 заменена на Metaspace, которая выделяется из внеheap-памяти и автоматически увеличивается по мере необходимости.

🟠Stack (Стек)
Содержит фреймы для каждого метода, который выполняется в потоке. Каждый фрейм включает локальные переменные, параметры метода и другие данные.

🚩Garbage Collector (GC)

Это автоматический механизм управления памятью, который освобождает память, занятую объектами, которые больше не используются.

🟠Minor GC (Малый сбор мусора)
Очищает Young Generation. Быстрая и частая сборка мусора.
🟠Major GC (Большой сбор мусора) или Full GC
Очищает Old Generation и, возможно, всю кучу. Медленнее, так как затрагивает больше объектов.

🚩Алгоритмы Garbage Collector

🟠Serial GC
Использует один поток для сборки мусора. Подходит для небольших приложений или одноядерных систем.
🟠Parallel GC (или Throughput GC)
Использует несколько потоков для ускорения сборки мусора. Хорошо подходит для многопроцессорных систем.
🟠CMS (Concurrent Mark-Sweep) GC
Выполняет сборку мусора одновременно с выполнением приложения. Минимизирует паузы, но требует больше ресурсов.
🟠G1 (Garbage First) GC
Делит кучу на регионы и выполняет сборку мусора по регионам. Минимизирует паузы и обеспечивает предсказуемую производительность.

🚩Пример настройки GC

Вы можете настроить JVM для использования конкретного сборщика мусора и управлять его параметрами с помощью аргументов командной строки.
java -XX:+UseG1GC -Xms512m -Xmx2g MyApplication


Хотя сборка мусора в Java автоматизирована, можно явным образом вызывать сборку мусора, используя System.gc(). Однако это лишь рекомендация для JVM, и она не обязана немедленно выполнять сборку мусора.
public class GarbageCollectorExample {
public static void main(String[] args) {
// Создание объекта
String str = new String("Hello, World!");

// Обнуление ссылки, объект становится доступным для сборки мусора
str = null;

// Явный вызов сборки мусора (не рекомендуется использовать в продакшн-коде)
System.gc();

System.out.println("Garbage Collector called");
}
}


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 15
  • ❤ 1
More from @easy_java_ru
  1. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  2. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
  3. Oct 8, 2026Post #2955
  4. Oct 8, 2026🤔 Что такое поток "демон"? Демон-поток — это поток, который: - Работает на фоне (например…
  5. Oct 7, 2026🤔 Может ли Entity-класс быть абстрактным? Да, Entity может быть абстрактным, если он служ…
  6. Oct 7, 2026🤔 К какой категории сущности относится Primary Key? Primary Key (первичный ключ) в базах…
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 →