Cuándo recoger la basura

Tengo un fragmento de código que carga una imagen muy grande en la memoria. Así que parecía algo razonable llamarlo

System.gc();

Antes de cargar la imagen. Por lo que puedo decir, funciona sin problemas.

Ayer decidí usar un software bastante útil llamadoEncontrar errores que escanea su código e informa sobre problemas que pueden causar errores o estrategias generalmente desaconsejadas. El problema es que este pedazo de código que mencioné se reporta. La descripción es la siguiente:

... obliga a la recolección de basura; extremadamente dudoso excepto en el código de evaluación comparativa

Y sigue elaborando:

El código invoca explícitamente la recolección de basura. Excepto por el uso específico en la evaluación comparativa, esto es muy dudoso.

En el pasado, las situaciones en las que las personas han invocado explícitamente al recolector de basura en rutinas como los métodos de cierre o finalización han provocado enormes agujeros negros de rendimiento. La recolección de basura puede ser costosa. Cualquier situación que obligue a cientos o miles de recolecciones de basura llevará a la máquina a un rastreo.

Así que mi pregunta es:¿No es correcto llamar programáticamente al recolector de basura en tal caso? Mi código solo lo llama una vez y el método en el que se usa se usa raramente. Y si no está bien llamarlo, ¿qué debe hacer en caso de que necesite la mayor cantidad de memoria posible antes de realizar una operación que requiere mucha memoria y necesita liberar la mayor cantidad de memoria posible antes de hacerlo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta