Los detalles se encuentran en la puesta en práctica (no la especificación). Sin embargo, las implementaciones generalmente siguen un patrón muy simple. La mayor parte del diseño de la memoria en Java es muy simple y directo. Mi terminología puede no coincidir con la terminología de Java, ya que no hago mucha programación en Java.
En general, un objeto comienza con un puntero a su vtable, y luego tiene un montón de campos que siguen. Los campos son tipos primitivos (int/bool/float) o punteros a los objetos. Eso es todo por los objetos. (Las clases también son objetos). Los punteros nulos son como C, no son válidos, no como Python, donde None es un objeto.
En una clase interna, hay un campo oculto adicional que apunta a una instancia de la clase externa. Así es como las clases internas acceden a los datos en la clase externa. Las clases anónimas funcionan de la misma manera. Los métodos estáticos son solo métodos en la clase en lugar de métodos en la instancia.
El vtable es donde sucede toda la magia. Cada clase tiene su propio vtable compartido entre todos los objetos. El vtable tiene información sobre la clase, como el tamaño de sus instancias y cómo se distribuyen los campos. Esta información es utilizada por el recolector de basura. El vtable también tiene un puntero a todos los métodos que implementa la clase. Cuando llamas a un método, el tiempo de ejecución primero saca el puntero vtable del objeto, luego saca el puntero del método del vtable, luego llama al método y pasa el objeto al método como un parámetro implícito. Es similar a C++, pero mucho más simple de implementar. El proceso puede omitirse si el método o la clase es "final".
Sé que Java realmente no tiene "punteros", tiene "identificadores simbólicos" o algo así, pero las implementaciones más comunes simplemente usan punteros antiguos.
El "cómo" es un detalle de implementación, no se define Spec. Dicho esto, este libro no le dice cómo lo hace en realidad ninguna implementación de Java, pero sí le dice cómo podría hacerlo una VM de tipo Java: http://www1.idc.ac.il/tecs/ – Dinah