Nocionalmente, el objeto continúa en "el montón". Entonces, como es una referencia local de método, la referencia real estará en la pila. Por "la" pila, nos referimos a la pila de subprocesos nativa (es decir, la misma pila en la que se asignaría una variable local en C) en el caso de la VM de Sun al menos, pero no creo que sea realmente un requisito (la JVM solo tiene que tener una noción abstracta de "marcos de pila" que asigna en cada llamada a método, ya sea desde la pila nativa o no).
Pero ... en las máquinas virtuales modernas (con la posible excepción de las máquinas virtuales integradas/mpbile), realmente no existe el "montón". En la práctica, hay varias áreas de montón. La más simple de estas es casi como una "mini pila", diseñada para ser rápida de asignar para objetos que no se mantendrán por mucho tiempo y probablemente puedan ser asignados casi de inmediato.
Según lo mencionado por otro afiche, una JVM altamente optimizada podría asignar datos de objeto en la pila y hay propuestas definitivas para esto. Aunque, como también se menciona en una de las referencias, una crítica de esto es que el montón rápido "eden" es casi como una pila de todos modos (simplemente no "la" pila).
Esta pregunta es un poco confusa como es. Podría ser "¿Dónde está guardada la memoria de myShip en la memoria?" o "¿Dónde está el objeto apuntado por myShip almacenado en la memoria?" La respuesta conceptual a la primera es la pila, y la respuesta conceptual a la última es el montón, salvo las optimizaciones y las implementaciones locas, y hay respuestas que responden en ambos sentidos. –