Strings versus GC, quando são elegíveis?

Bom dia pessoa, estou fazendo agora os testes do mock e muitas dúvidas vão pintando, acabei de ler o seguinte trecho na explicação de uma questão do mock
da enthuware:

[quote]How Java treats Strings:

Say you have the following code:
. . .
String a = “hello”;
String b = “hello”;
String c = new String(“hello”);

a is set to a String object, “hello”. The JVM implicitly calls new, and allocates the string. b is set to reference the same “hello” String object. Instead of implicitly calling new and allocating a new String, b is set to reference the same String object that is referenced by a. This is called interning. Such interned strings are never GCed. [/quote]

Bom com base na explicação acima pode-se afirmar então que se houver uma questão do tipo:

String a = “hello”;
String b = “hello”;
String c = new String(“hello”);
a = null;//line 3

In the absence of compiler optimization, after which earliest line the object originally referred by a is definitely eligible to be garbage collected?

Poderiamos então afirmar que não haverá um objeto elegível para o GC?
Já que “This is called interning. Such interned strings are never GCed.”?

Obrigado pela atenção.

De acordo com o livro da Katy nesse caso acima, o compilador encontrará o literal string “hello” e o colocará no pool de constantes strings. Quando chegar na linha em que

String b = "hello";, a variável b referenciara o “hello” que está pool de constantes, na linha em que String c = new String("hello"); será criado somente um objeto “hello” no heap e não no pool pois já existe o “hello” lá. Logo quando a = null ainda existira o objeto “hello” no heap e ao mesmo tempo no pool em que ambas as variáveis a e c referenciam, deste modo não haverá um objeto elegivel pois ainda existe referencia para o objeto “hello”.

Obrigado pela explicação Henrique.tenorio, aproveitando o gancho, sei que você se certificou a pouco tempo, gostaria de saber como você se comportou para decorar os métodos do framework Collection:
ceiling(e,b*)
ceilingKey(e,b*)
floor…

enfimm são muitos métodos, e vi que há questões de drag and drop, enfim as partes decorebas do exame, queria saber como vc decorou, repetindo em que periodo de dias…

Obrigado.

[quote=ribclauport]Obrigado pela explicação Henrique.tenorio, aproveitando o gancho, sei que você se certificou a pouco tempo, gostaria de saber como você se comportou para decorar os métodos do framework Collection:
ceiling(e,b*)
ceilingKey(e,b*)
floor…

enfimm são muitos métodos, e vi que há questões de drag and drop, enfim as partes decorebas do exame, queria saber como vc decorou, repetindo em que periodo de dias…

Obrigado.[/quote]

Essa parte de decoreba é chato mesmo, o segredo é praticar fazendo exercícios de livros e simulados várias vezes, só assim pra sua massa cinzenta poder assimilar. Também é legal você fazer umas fichinhas com a pergunta e resposta no verso ai você se auto questiona, ajuda também. Questões de drag and drop são chatas tive o azar de encarar 4 delas 2 eu acertei, deixe elas para o final.

Muito obrigado Henrique.tenorio pela sua colaboração.

Atenciosamente