12
fév.
2009
fév.
2009
Java : un problème sur la LinkedBlockingQueue
Java / JEE ›
Liens externes
|
Tags :
java
Par Olivier Croisier
En s'appuyant sur le code de la classe LinkedBlockingQueue, Alex Miller (Pure Danger Tech) démontre que la moindre erreur d'algorithmique dans une structure de données complexe peut avoir des conséquences catastrophiques au niveau des performances : une simple référence conservée trop longtemps sur un objet devenu inutile peut empêcher le garbage collector de faire son travail, et saturer la mémoire.
Un billet à lire d'urgence, surtout si vous prévoyez de développer vos propres collections.
Commentaires
Comment imaginer avoir à développer ses propres collections en 2009 ? A moins de développer pour le jdk, je ne vois pas.
Moi, ça m'est déjà arrivé. J'ai développé des structures de données pour trouver efficacement des données associées à une période de temps (index spatial unidimensionnel), à une surface ou à un volume (index spatiaux bi- et tri-dimensionnels). Par ailleurs, il y a quelques années, j'ai aussi développé des collections compactes (TinySet/TinyMap) utiles pour un faible nombre de données stockées, que le JDK actuel ne rend toujours pas obsolète. Enfin, il y a quelques années, j'ai été amené à développer des collections de type Hashtable avec des clés et/ou des valeurs de type élémentaire, beaucoup plus rapides et efficaces que les classiques HashMap<Integer, E> ou HashMap<E, Long> (et elles le sont toujours).