Complementarmenete, há espaço para rever a arquitetura de uma JVM:

A Maquina Virtual Java define várias áreas de dados em tempo de execução as quais são usadas durante a execução de um programa. Algumas dessas áreas de dados são criadas na inicialização da Máquina Virtual Java e são destruídas apenas quando a Máquina Virtual Java acaba seu processo. Outras áreas de dados são por threads. Áreas de dados por threads são criadas quando uma thread é criada e são distruidas quando a thread termina seu processo.
- The pc Register : PROGRAM Counter REGISTER (Per-thread)- Cada thread tem seu próprio registro de contagem de Programa. Eles são atualizados depois de cada byteCode executado – os bytecodes se encontram na Method Area- . O pc Register é dividido basicamente em 4 partes:
*frame: É uma referencia ao Frame, contem um ponteiro para o método em execução (O método em Execução é o primeiro método (Frame ) na Stack da thread)
*optop: Contem um ponteiro para o top da operand Stack é usado para avaliar expressões aritméticas(Operand Stack do Frame Referente a Stack da thread )
*pc - o contador de programa,contem O ENDEREÇO DO PROXIMO BYTECODE QUE SERÁ EXECUTADO(Metodo area)
*vars - o registrador de variáveis,contem um ponteiro para as local variables. (Local Variables da Frame referente a Stack)
Execution Enviroment = É o frame em execução
Na stack temos Frames, em frames temos: - Operand Stack, Local Variables e uma Referência a Runtime Constant Pool.