Notionellement, l'objet passe sur "le tas". Puis, parce que c'est une référence méthode-locale, la référence réelle sera sur la pile. Par "la" pile, nous entendons la pile de threads natifs (c'est-à-dire la même pile qu'une variable locale dans C) dans le cas de VM de Sun au moins, mais je ne pense pas que ce soit une exigence (la JVM Il suffit d'avoir une notion abstraite de "cadres de pile" qu'il alloue à chaque appel de méthode, que ce soit à partir de la pile native ou non.
Mais ... sur les machines virtuelles modernes (avec peut-être l'exception possible des machines virtuelles incorporées/mpbile plus simples), il n'y a vraiment rien de tel que le segment de mémoire "the". En pratique, il existe plusieurs zones de tas. La plus simple d'entre elles est typiquement presque une "mini-pile", conçue pour être rapidement allouée aux objets qui ne traînent pas longtemps et qui peuvent probablement être désaffectés presque immédiatement.
Comme mentionné par une autre affiche, une JVM hautement optimisée pourrait allouer en principe des données d'objet sur la pile et il y a des propositions précises pour cela. Bien que, comme mentionné également dans l'une des références, une critique de ceci est que le tas rapide "eden" est presque comme une pile de toute façon (juste pas "la" pile).
Cette question est un peu peu claire telle quelle. Cela pourrait être soit "Où est la référence à myShip stockée en mémoire?" ou "Où l'objet pointé par myShip est-il stocké en mémoire?" La réponse conceptuelle à la première est la pile, et la réponse conceptuelle à cette dernière est le tas, à l'exception des optimisations et des implémentations folles, et il y a des réponses qui y répondent dans les deux sens. –