Während des Lebenszyklus einer Java HashMap gibt es eine Möglichkeit festzustellen, wie viele Kollisionen/Verkettungen aufgetreten sind. Wie oft wurde die Größe der HashMap geändert und wie lange dauerte jedes Resize Event?Statistiken für Java HashMap
Ich habe Quellcode für HashMap (1.6), und es sieht aus wie es erweitert werden kann, um die oben genannten Funktionen hinzuzufügen.
Ein wenig Hintergrund, ich habe einige Legacy-Anwendung geerbt, und da wir CMS-GC verwenden, die nicht-Kompaktierung sein geschieht. Diese Hashtabellen können mehr als eine Million Einträge enthalten. Wir stehen vor einigen Performance-Problemen in der Produktion, die nur während Aktivitätsspitzen auftreten. Und wir konnten sie in unserem Produktionsreplikat nicht reproduzieren.
In meinem vorherigen Projekt haben wir die unsere Cache-Nutzungsstatistiken regelmäßig ihre Wirksamkeit bestimmen drucken.
würde schätzen auch Ihre Meinung/Kritik dazu, ob eine richtige Linie des Denkens?
'Ich habe den Quellcode für HashMap (1.6) überprüft, und es sieht so aus, als ob er erweitert werden könnte, um die obige Funktionalität hinzuzufügen.Was hast du gesehen, was dich dazu gebracht hat zu denken, und welchen Ansatz hast du vor? Außerdem - warum vermuten Sie jetzt, dass dieser Ansatz * nicht funktioniert, so dass Sie hier fragen? –
Ich suchte entweder Kritik (schlechte Idee) oder Meinung (bitte sehen Sie diese Open-Source-Bibliothek). Die Google-Suche brachte keine Ergebnisse, also war ich überrascht. In der Regel werden die meisten Fragen von Google Ergebnissen beantwortet. Hier ist eine interessante [link] (http://www.javamex.com/tutorials/collections/hash_codes_advanced_statistics.shtml) Ich fand, nicht sicher über die Mathematik dahinter. Ich werde eine Folge dieser Übung veröffentlichen. – yichuan
Java 8 enthält einige nützliche Aktualisierungen für die Leistung von HashMap. Wenn Sie Glück haben, Java 8 verwenden zu können, sollten Sie es versuchen –