Originariamente inviato da ragnonerodocet
Nello heap c'è tutto ciò che preesiste all'esecuzione del programma: tutto ciò che è statico per esempio.
Dalla documetazione:

The Java virtual machine has a heap that is shared among all Java virtual machine threads. The heap is the runtime data area from which memory for all class instances and arrays is allocated.

Il heap è quindi l'area in cui si possono allocare oggetti (anche gli array sono oggetti). Non si può allocare sul heap es. un tipo primitivo ... solo oggetti.

Originariamente inviato da ragnonerodocet
Nell'esempio precedente, a, b e d, essendo variabili d'istanza, vengono salvate sullo stack
No, a/b/c/d sono variabili messe sul heap. a/b/d poi sono di istanza e fanno parte di ogni oggetto MiaClasse allocato sul heap.

Originariamente inviato da ragnonerodocet
Ovvero, se sto nel main, con l'istruzione

MiaClasse myClass = new MiaClasse ();

creo nello stack una variabile di tipo reference chiamata myClass che punta ad un oggetto di tipo MiaClasse.
Ok.