Originariamente inviato da ragnonerodocet
Vorrei sapere, se possibile, cosa viene allocato in memoria a compile time
Il compile time non centra ... genera solo il bytecode.

Originariamente inviato da ragnonerodocet
E per esempio, nel caso sopra, è la variabile "c" che va nell'heap (essendo statica) o il valore "BABBA", oppure cosa???
La variabile 'c' è statica, quindi è allocata sul heap. Le variabili 'a', 'b' e 'd' sono di istanza, quindi quando viene istanziato un oggetto MiaClasse esse fanno parte dell'oggetto che è allocato sul heap. Inoltre a 'd' viene assegnato il reference ad un altro oggetto anch'esso allocato sul heap.

Le stringhe literal "BABBA" e "CIAO" sono degli oggetti che vengono messi nel "constant pool". Stando alla documentazione Runtime Data Areas un constant pool è allocato nella "method area" che tecnicamente fa parte del heap ma viene trattato in modo particolare (generalmente, ma poi dipende dalla implementazione specifica, gli oggetti nel constant pool non sono mai collezionati dal gc).

Spero di aver detto tutto giusto, comunque basta leggere la Java Virtual Machine Specification che spiega in modo dettagliato queste cose.