Dovresti avere ALCUNE conoscenze su come la garbage collection per Java funzioni per due motivi:
In primo luogo, se non sai come funziona, potresti accidentalmente prendere decisioni di progettazione che portano alla peggiore performance della tua applicazione reale. Questo diventa sempre meno probabile man mano che il GC migliora, ma se hai una scelta di algoritmi nella tua app, allora sapere qualcosa sul GC significa che puoi sceglierne uno con la conoscenza di quello che farà, invece di scoprire che ciò causa cattivo comportamento.
In secondo luogo, se non sai come funziona, non è possibile ottimizzare il GC per una determinata applicazione. La maggior parte dei programmatori Java non ha mai bisogno di regolare il GC, poiché i parametri predefiniti funzionano abbastanza bene la maggior parte del tempo. Se fai qualcosa che esce da quel 'la maggior parte del tempo', allora potresti ritrovarti a sintonizzare i parametri del GC. Farlo senza conoscere il GC è solo girando casualmente le manopole - potresti ottenere qualcosa di utile da esso, ma più probabilmente rischi di rovinare le cose peggio.
Quindi, anche se non mi aspetto che un buon programmatore Java sappia tutto ciò che c'è da sapere su GC, mi aspetto che il programmatore sappia a un certo livello in che modo il GC nella JVM sta usando le funzioni e quali sono i compromessi sono per quell'algoritmo GC.