Leistungsunterschiede zwischen statischen und nicht statischen primitiven Endfeldern in Java

Ich bin kürzlich auf eine Klasse gestoßen, für die das folgende Feld deklariert wurde:

private final int period = 1000;

In diesem speziellen Fall hatte der Autor vorgesehen, dass es auch statisch ist, und da der Wert zu keinem Zeitpunkt geändert werden konnte, gab es keinen wirklichen funktionalen Grund, es nicht als statisch zu deklarieren, aber ich fragte mich, wie Java final behandelt gegen endgültige statische Grundelemente.

Im Speziellen

1) Wie werden endgültige statische Grundelemente gespeichert? Werden sie einfach direkt in die Ausdrücke kompiliert, in denen sie verwendet werden?

2) Wenn ihnen tatsächlich Speicher zugewiesen wurde, muss dann jede Instanz der enthaltenden Klasse einen Verweis auf diesen Speicherort pflegen? (In diesem Fall wäre in Primitiven mit weniger als 4 Bytes jede Instanz der Klasse tatsächlich größer als wenn sie das Primitiv einfach direkt einschließen würde, wie es im nicht statischen Fall der Fall wäre.)

3) Sind Compiler nun schlau genug, um festzustellen, ob die Variable in Fällen wie dem oben genannten "effektiv statisch" ist, da es unmöglich wäre, dass verschiedene Instanzen unterschiedliche Werte enthalten und sie daher ähnlich wie eine endgültige statische optimieren?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage