Различия в производительности между статическими и нестатическими конечными примитивными полями в Java

Недавно я наткнулся на класс, у которого было объявлено следующее поле:

private final int period = 1000;

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

Особенно:

1) Как хранятся конечные статические примитивы? Они просто скомпилированы непосредственно в выражения, в которых они используются?

2) Если они фактически являются выделенным хранилищем, должен ли каждый экземпляр содержащего класса поддерживать ссылку на это местоположение? (в этом случае для примитивов размером менее 4 байтов каждый экземпляр класса будет на самом деле больше, чем если бы он просто включал примитив напрямую, как это было бы в нестатическом случае)

3) Являются ли компиляторы достаточно умными, чтобы определить, что в таких случаях, как приведенный выше, переменная «эффективно статична», так как было бы невозможно, чтобы разные экземпляры содержали разные значения и, следовательно, оптимизировали ее так же, как и конечную статическую?

Ответы на вопрос(1)

Ваш ответ на вопрос