Quando Coletar Garbage

Eu tenho um pedaço de código que carrega uma imagem muito grande na memória. Então parecia uma coisa razoável chamar

System.gc();

antes de carregar a imagem. Pelo que posso dizer, funciona sem problemas.

Ontem eu decidi usar um software muito útil chamadoFindBugs que analisa seu código e relata problemas que podem causar bugs ou estratégias geralmente não recomendadas. O problema é que esse pedaço de código que mencionei é relatado. A descrição é esta:

... força a coleta de lixo; extremamente duvidosa, exceto no código de benchmarking

E continua a elaborar:

Código invoca explicitamente a coleta de lixo. Exceto para uso específico em benchmarking, isso é muito duvidoso.

No passado, situações em que as pessoas invocavam explicitamente o coletor de lixo em rotinas como fechar ou finalizar métodos levaram a buracos negros de alto desempenho. A coleta de lixo pode ser cara. Qualquer situação que force centenas ou milhares de coletas de lixo trará a máquina para um rastreamento.

Então minha pergunta é:Não é OK para chamar programaticamente o coletor de lixo nesse caso? Meu código só o chama uma vez e o método em que ele é usado raramente é usado. E se não estiver certo chamá-lo então o que você deve fazer em um caso em que você precisa da maior quantidade de memória possível antes de fazer uma operação muito intensiva de memória e precisa liberar o máximo possível de memória antes dela?

questionAnswers(4)

yourAnswerToTheQuestion