Java Memory Model (JMM) - это модель памяти, описывающая способ, которым потоки в Java могут обращаться к переменным и обмениваться данными. Она определяет правила, которые гарантируют корректность синхронизации и доступа к переменным в разных потоках исполнения. В JVM есть несколько типов памяти: JMM определяет, каким образом потоки взаимодействуют с памятью, доступной им на чтение и запись. JMM гарантирует атомарность операций чтения и записи для переменных типов, размер которых не превышает 32 бита (int, float, boolean)...
Сегодня поговорим про память в JVM. Все знают про heap и stack. Начнем с них. 1) heap, она же куча. Хранит все создаваемые при работе JVM объекты. Очищается сборщиком мусора - garbage collector. Делится на поколения: Eden, Survivor и Tenured (Old), между которыми перемещаются выжившие при сборке мусора объекты. Кроме объектов начиная с Java 7 хранит также пул строк и другие пулы. Другие пулы - это пулы базовых типов-обверток над примитивами с фиксированным числом значений. Т.е. Boolean, Byte, Short, Integer, Long, Character...