Молодое пространство включает в себя пространство Эдема и пространства выживших.
Где живут статические и статические конечные примитивы и ссылки, чтобы JVM могла использовать один экземпляр?
Не определено, но в JVM Sun / Oracle статические поля живут в специальном объекте для полей класса. У вас есть один экземпляр на загрузчик классов, поэтому у статических полей может быть несколько экземпляров.
Сохраняются ли статические и статические конечные объекты в куче (я предполагаю, что они перемещены в постоянные)?
В Sun / Oracle Java 7 они есть. Они могут быть в Пермском гене или где-нибудь еще.
Что считается наилучшей практикой с точки зрения количества статических окончательных ссылок в приложении?
Сведите их к минимуму.
Будет ли создание более статических окончательных ссылок уменьшать объем пространства кучи в JVM?
Если вы можете изменить конечное поле на статическое конечное поле, это может сэкономить некоторое пространство (если у вас несколько экземпляров). Однако ясность обычно важнее производительности. (И я бы сделал это для ясности)
Кстати: я работаю на Java уже 13 лет.
Так что может быть несколько экземпляров статических полей - JVM изменяет каждый экземпляр
Они независимы. Каждый загрузчик классов может загружать свою собственную версию класса (код не обязательно должен быть одинаковым), и каждый получает свои собственные статические поля (они не обязательно должны быть одинаковыми)
если статическое поле изменено (т. Е. Static int instanceCount, где instanceCount ++ выполняется для каждой конструкции объекта)?
номер
Кроме того, объекты могут быть перемещены в Пермский генерал?
Нет. Некоторые данные, которые не определены в одном месте, могут находиться где угодно в зависимости от реализации и версии.
Считается ли Пермский генерал частью Кучи?
Это часть старого поколения = владение + постоянное поколение.
Молодой ген = Эдем + пространство выжившего * 2
Максимальный размер кучи ограничивает молодого поколения и общее количество владения. Пермь и прямая память имеют свои пределы. Файлы с отображением в памяти выполняются в соответствии с любым из этих ограничений.
Это верно для параллельного коллектора по умолчанию и одновременной развертки метки.
Коллектор G1 не разделяет пространства одинаково.
Ссылки для более подробной информации
http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html
Терминология кучи Java: молодое, старое и постоянное поколение?
http://javarevisited.blogspot.com/2011/04/garbage-collection-in-java.html