Gerenciamento de pilha e pilha de Java em Java
Quero saber como a memória está sendo alocada no seguinte programa:
public class MemoryClass {
public static void main(final String[] args) {
int i = 0;
MemoryClass memoryClass = new MemoryClass();
memoryClass.myMethod(memoryClass);
}
private void myMethod(final Object obj) {
int i = 1;
String s = "HelloWorld!";
}
}
Agora, na minha opinião, o diagrama a seguir descreve como a alocação de memória ocorre:
No diagrama acima,memória,obj es, que estão na memória da pilha, são na verdade as referências a seus "objetos reais"que são colocados dentro da memória heap.
Aqui está o conjunto de perguntas que me vêm à mente:
MemoryClass
dentromyMethod
, a JVM alocaria memória para os mesmos métodos novamente dentro da memória da pilha?A JVM liberaria a memória alocada paramyMethod
assim que sua execução for concluída, em caso afirmativo, como gerenciaria a situação mencionada na pergunta 2 (aplicável apenas se a JVM alocar memória várias vezes para o mesmo método)Qual teria sido o caso, se eu tivesse declarados e não inicializou, a JVM ainda alocaria memória para todos os métodos dejava.lang.String
classe, se sim, por quê?