Alocação em Mémoria

Eu tenho o seguinte código:

1 class A { 2 public static A r = new A(10); 3 private int y[ ] = new int[3]; 4 public A(int k) {y[0] = k; y[1] := k+1; y[2]:= k+2;} 5 public int get(int k){return y[k];}; 6 public void set(int k, int u){y[k]= u;}; 7 } 8 public class Prova { 9 public static void main(String[] args){ 10 A a = new A(20); A b = a; A c = A.r; String s = " "; 11 System.out.println(A.r.get(2) + s + a.r.get(2)}; 12 System.out.println(b.r.get(2) + s + c.r.get(2)); 13 System.out.println(a.get(2) + s + b.get(2) +s+ c.get(2)); 14 A.r.set(2,4); a.set(2,5); b.set(2,8); c.set(2,7); 15 System.out.println(A.r.get(2) + s + a.r.get(2)); 16 System.out.println(b.r.get(2) + s + c.r.get(2)); 17 System.out.println(a.get(2) + s + b.get(2) + s + c.get(2)); 18 } 19 }

Eu queria saber como eu faço para identificar quando o código faz a alocação na memoria, eu rodei pelo debug mas ele ñ mostra.
Alguem poderia me dar uma ajuda nessa parte vlw.

gardussi
Se não me falhe a memória é no momento em que vc executa o programa, porque a clase “A” você a definiu como static, ou sejá, no momento que que a vm itentifica que existe a classe “A” a mesma já é alocada!

Então no momento em q eu executo o código, ele identifica a primeira linha de declaração ele já aloca em memória, no caso sendo a linha 2?
seria isso mesmo?

variáveis e blocos static são declarados e inicializados primeiro(e somente na primeira vez), depois as variáveis e blocos anônimos de instância, e por último o construtores e métodos executam.

então quando ele chegar tipo na linha 2 e 3 é quando a variável é alocada ou é antes quando é chamada na linha 10?

quando vc executa o comando java Prova, a vm carrega a classe Prova.class e já aloca o espaço,
ex, mesmo que vc “nunca” use a classe A, pelo simples fato de a mesma ser declarada como “static” ela é alocada em memória!

Quando ele executar, a primeira linha q ele vai alocar é a 2 então, certo por ele ser static