Bonjour à tous.
En cherchant à optimiser la vitesse d'un programme, j'ai remarqué que le GC fonctionnait beaucoup.
Ne pouvant augmenter la mémoire utilisée par java, j'ai lancé le profiler mémoire de NetBeans pour voir quels objets étaient créés pendant le déroulement du programme et tenter d'optimiser.
Je suis parvenu à limiter la création de nombreux objets et gagné pas mal en performance.
Cependant, il reste un mystère que je ne parviens à résoudre : le profiler m'indique la création de très nombreux objets "Double" durant le traitement.
Je suis certain que mon code ne crée pas directement des Double.
(par contre, j'utilise beaucoup de "double" primitifs mais le GC n'est pas concerné par eux, à moins que je me trompe).
Je n'utilise pas de Double[] ni de d'ArrayList<Double>, ni autre structure qui contiendrait des Double et qui pourraient entraîner des créations de Double par "boxing caché".
Auriez-vous la moindre idée de fonctions Java qui pourraient créer des Double ?
ou bien : Dans quelles circonstances java pourrait transformer un double primitif en nouvel objet Double ?
Je sais que sans le code source, c'est compliqué de répondre (je ne peux poster les dizaines de milliers de lignes du code source...), mais je suis preneur de pistes éventuelles.
Par exemple, j'avais pensé aux fonctions de StrictMath, que j'utilise pas mal, mais il semblerait que ce ne soit pas ca.
Merci par avance pour vos idées lumineuses.
Partager