Bom dia amigos.
Estou com uma dúvida.
Quando é executado o Garbage Collector na minha bean(viewScoped)? Quando saio de página ou quando fecho o navegador?
Obrigado
Bom dia amigos.
Estou com uma dúvida.
Quando é executado o Garbage Collector na minha bean(viewScoped)? Quando saio de página ou quando fecho o navegador?
Obrigado
Quando ele é executado você não tem como saber. Mas se formos seguir a teoria, quando você mudar de página ou fechar o navegador, não haverão mais referências à instância, então em ambos os casos a instância estaria elegível ao Garbage Collector.
Para mais detalhes você teria que ter mais conhecimento da implementação que você escolheu, para ver exatamente onde ele larga a referência.
Beleza, muito obrigado pela resposta.
Tenho uma duvida, não sei se vou falar besteira, mas vou perguntar, é só assim que se aprende neh 
Tem algum problema se eu executar o garbage collector na mão?
Lembrando que estou utilizando JSF 2
Obrigado
Não há problema nenhum, mas eu não recomendo, veja o que a documentação diz:
[quote=JavaDoc]Runs the garbage collector.
Calling the gc method suggests that the Java Virtual Machine expend effort toward recycling unused objects in order to make the memory they currently occupy available for quick reuse. When control returns from the method call, the Java Virtual Machine has made a best effort to reclaim space from all discarded objects.
The call System.gc() is effectively equivalent to the call:
Runtime.getRuntime().gc()[/quote]
Veja o que eu marquei em negrito, a invocação sugere que seja invocado o Garbage Collector, mas nada te garante que ele realmente será executado. Portanto seu sistema não pode depender disso.
Quando pensamos em sistemas temos que lembrar daquela frase: “Tudo o que pode dar errado, vai dar errado”
Então não faça isso pensando: “Ah, a chance de não ser executado é mínima”, porque alguma hora isso vai acontecer.
Então eu repito, não tem problema nenhum invocar, mas não dependa disso para o funcionamento do seu sistema
Eu particularmente não invocaria.
Problema não há, entretanto a chamada ao GC é apenas sugestiva, não quer dizer que ele será executado naquele exato momento (depende da implementação).
E, em algumas implementações, ele pode não fazer nada. Além de você poder desativar essas chamadas com o parâmetro “-XX:+DisableExplicitGC”.
É melhor saber configurar o GC para a sua aplicação do que escrever código orientado a ele.
Obrigado pela resposta amigos.
Ficou claro pra mim agora.
Quando vocês falam de implementações, estão falando da jre da Oracle e outras?
[quote=fabiocesar.ti]Obrigado pela resposta amigos.
Ficou claro pra mim agora.
Quando vocês falam de implementações, estão falando da jre da Oracle e outras?[/quote]
Exato! Temos outras JVMs de mercado. Alguns exemplos:
Perfeito amigo.
Obrigado pela ajuda e pelo esclarecimento.