16. april 2012 - 15:56Der er
13 kommentarer og 1 løsning
performance relateret til HashMap
Jeg er ved at lave en server app som skal håndtere omkring 1500 requests i sekunded. Det gør den også men mit problem er at når jeg bruger HashMap får jeg et problem med at GC'en umiddelbart ikke rydder ordentligt op i mine Key's.
Den konklusion er baseret på div. heap-dumps som fortæller mig at java.util.HashMap$KeyIterator let står for 17% af den memory der bliver brugt og den er konstant voksende(memory leak)
Er der en anden type man kunne bruge som byder på samme funktionalitet men som er bedre til at rydde op efter sig selv i 1.6.0?
Jeg ved at JRE'en i 1.7.0 er mere effektiv men grundet andet programmel kan vi ikke opgradere denne.
Der bruges Sun's egen. Eneste Iterator jeg bruger er når jeg beder om keySet() på Map'et. Disse bliver dog øjeblikketligt konventeret til et array da jeg sletter løbende i Map'et som jeg gennemgår det så den tidligere kode er nok rimeligt grovt simplificeret
Fandt problemet. GC'eren skulle bruge nogle kald for at gøre det samme som den gør automatisk i windåse. Satte et periodisk kald, til gc(), ind i hver tråd som køre hvert minut, hvilket betyder at den rydder op i den allokerede memory til KeyIterator'er. Det sutter maks røv at skulle klare det på sådan en måde men understøtter blot min teori om at det var JRE'en der slog knuder :-)
Der er jo rimeligt konstant pres på den server der køre det så vores overvågning af den er meget tight. Da vores drift folk helst ser at de ikke hele tiden modtager advarsler skal den helst holdes nede :-)
Saa den Java app maa godt bruger meget memory naar der er hoej aktivitet men skal bruge lidt memeory naar der er lav aktivitet?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.