Статические примитивы Java, объекты, методы и куча (управление памятью и лучшие практики)

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

Итак, вот что я знаю:

  • Java "передается по типу" - то есть примитивы передаются по копиям, а ссылки на объекты передаются по копиям (ссылки указывают на их объект в куче).

  • Примитивные переменные экземпляра и ссылки живут в своем объекте класса в куче, а локальные примитивы и ссылки живут в стеке (в соответствующем кадре стека).

  • Пространство памяти Perm Gen. — это место, где хранятся метаданные класса (используются для отражения).

  • В куче есть пространство Eden, где новые объекты являются местами, пространство Young, где хранятся объекты, пережившие GC, и пространство Tenured, где размещаются долгоживущие объекты.

Итак, вот что я хотел бы понять:

  • Где живут статические и статические конечные примитивы и ссылки, что JVM может использовать один экземпляр?

  • Сохраняются ли статические и статические конечные объекты в куче (я предполагаю, что они перемещены в постоянные)?

  • Что считается наилучшей практикой с точки зрения количества статических конечных ссылок в приложении?

  • Будет ли создание большего количества статических конечных ссылок уменьшать объем пространства кучи в JVM?

Я читал много разных объяснений по этому поводу (все отличались) и был бы рад, если бы опытный ветеран языка Java мог дать хорошее объяснение. Заранее спасибо!

10
задан jjNford 1 March 2012 в 13:37
поделиться