Quantos objetos na Memoria?

galera eu tenho um array com o seguinte codigo:

String []nomes = {new String(“JOSE”), new String(“MARIA”), new String(“JOAO”)};

quantos objetos eu teria na memoria, considerando a questao de valores literais ?, seriam 4 ou 7 (pois dizem que um valor literal é mais um objeto na memoria?)

Obrigado!!

Bem, creio que serão 7 objetos, embora os 3 objetos usados nos construtores de String (“JOSE”, “MARIA” e “JOAO”) sejam copiados no interior dos construtores sem que reste qualquer referência a eles, e provavelmente não demorarão a ser descartados pelo Coletor de Lixo.

Esse tipo de pergunta é bem capciosa, já que na verdade há mais objetos que você está pensando.

Tipo do objeto Referência               Valor
String[]       nomes                    String[3]
String         nomes[0]                 new String("Jose".value)
String         nomes[1]                 new String("Maria".value)
String         nomes[2]                 new String("JOAO".value)
char[]         nomes[0].value           "Jose".value
char[]         nomes[1].value           "Maria".value
char[]         nomes[2].value           "JOAO".value
String         Pool: "Jose"             "Jose"
String         Pool: "Maria"            "Maria"
String         Pool: "JOAO"             "JOAO"

(Há um campo “private char value[]” na classe String.)

Thingol, me desculpe mas será que você poderia ser mais específico?
Fiquei curioso e estou na dúvida de quantos objetos realmente estão instanciados por causa dos chars.
Será que você poderia explica-los?
Muito obrigado!