Память приложения в Java
Память в Java состоит из следующих областей:
Metaspace — в нее загружаются статические данные, метаданные, описания объектов.
Stack — область памяти в которую сохраняется в очередности запуска информация по выполняемому методу, его примитивным переменным, ссылкам на переменные. На каждый поток создается отдельный стек.
Heap — хранит объекты на которые ссылается Stack и небольшой объем технической информации не регламентируемый спецификациями. Одна на все потоки.
В Java реализована сборка мусора по поколениям. В области памяти молодого поколения она проходит часто, в старом поколении реже. Сделано для того чтобы минимизировать приостановку JVM на время сборки мусора.