le point n'est pas la, le GC explicite est inutile puisque la jvm lors de la tentative d'allocation va tout faire pour trouver la mémoire dont tu as besoin.
De toutes facons, tu ignore ou a eu lieu le Out of memory, ca peut etre dans l'allocation d'un buffer pour une socket par exemple, auquel cas tu as peut etre perdu des données dans le meilleurs des cas ou tu a rendu ta socket inutilisable dans le pire des cas. Vouloir retomber sur ses patte est stupide dans 99.9% des cas.
Quand à la spec, ouvre la, elle fait des tonnes de pages, cherche la partie sur allocation de mémoire et tu verra qu'elle fait tout pour trouver ta mémoire et qu'elle lance elle meme le gc, donc un gc explicite est inutile. System.gc() n'est pas une commande magique qui va tout faire fonctionner. On l'utilise très rarement et uniquement quand nécessaire pour des raison de performances. Exemple fictif: tu sais que tu va avoir besoin de faire 10 allocations en file et que t'asbesoin d'etre trèsréactif pendant ces 10 allocations. Dans ce cas tu lance le gc avant pour "limiter" les risque qu'il tourne pendant!
Partager