Mi sono sempre chiesto quando, dove e per quanto tempo i valori final static dichiarati nelle classi vivano.
Mi sono accorto oggi per la prima volta nella mia vita di una cosa un po strana: ho una classe S che contiene dei campi statici, e due classi A e B che li utilizzano.
Ora, diciamo che io interrompo completamente l'applicazione, apro il sorgente di S e modifico solo i valori di alcune di quelle costanti.
Se non ricompilo A e B, queste continueranno a riferirsi ai valori vecchi della classe S.
Quindi quello che volevo chiedere è, anche per sommi capi, il ciclo di vita di una variabile statica. Quello che mi aspettavo nel mio piccolo era che questi valori venivano in qualche modo allocati nella jvm per la durata di una esecuzione che li referenzia, ma al termine della sessione corrente della jvm questi venissero 'azzerati' e riallocati nuovamente al riavviarsi della jvm stessa.
Invece pare evidente che vengono anche scritti nel byte code delle classi esterne che vi si riferiscono.
Pareri autorevoli ( e non)?