Allora faccio una domanda per vedere se ho capito di cosa si sta parlando.
Nello heap c'è tutto ciò che preesiste all'esecuzione del programma: tutto ciò che è statico per esempio.
Nell'esempio precedente, a, b e d, essendo variabili d'istanza, vengono salvate sullo stack nel momento in cui viene creato mediante new un oggetto di tipo MiaClasse.
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.
Sbaglio?