Mälueraldamiste jälgijate võrdlemine JVM’is

Nimi
Viktor Karabut
Kokkuvõte
Mälueraldamiste jälgija (Memory allocation tracker) on tööriist, mis registreerib objektide loomisi JVM’is. Tavaliselt, mälueraldamiste jälgija on profileerija alamosa. Sams eksisteerivad ka eraldiseisvad lahendused. Töö põhieesmärk on läbi vaadata ja võrrelda olemasolevate avatud lähtekoodiga mälueraldamiste jälgijaid. Selleks, et mõõta mälueraldamiste jälgijate effektivsus kasutasime SPECjvm2008 jõudlustestide komplekt. Mälu kasutamise mõõtmiseks oli kirjatud oma JVM TI agent, mis perioodiliselt kirjutab kasutatud mälu suurus CSV faili. Töö käigus olid läbi vaadatud ja testitud selliseid mälueraldamiste jälgimise lahendusi: • HRPOF – lihtne käsurea kasutajaliidesega profileerimise tööriist, mis pakutakse JavaDevelopment Kit (JDK) koosseisus. • NetBeans profileerija – varem see oli eraldiseisav avatud lähtekoodiga uurimis proekt nimega JFluid. Praegu see on NetBeansi osa. • TPTP profileerija – profileerija, mis kasutatakse Eclipse IDE’s. • Project Allocation Instrumenter – mälu eraldamiste jälgija Google’st. On kirjutatud puhtas Javas. Kasutab java.lang.instrument API ja ASM raamistikku baitkoodi analüüsimiseks ja manipuleerimiseks. Neljast kahel mäluereldamiste jälgijatel olid probleemid stabiilsusega. NetBeans valesti muutus javazoom.jl.decoder.huffcodetab klassi baitkoodi, mille pärast ei saanud mpegaudio testi käivitada. Eclipse TPTP profileerija ei suutnud edukalt oma tööd lõpetada mitmel korral erinevate jõudlustestide käivitamise ajal. NetBeans profileerija on tehniliselt kõige arenenum ja kõike tõhusam mäluerdlamiste jälgimise lahendus. See ei ole üllatav, kuna Sun’i insenerid kirjutasid seda parrallelselt Java virtualse masina arenguga. Kõige problemaatilisem mälueraldamiste jälgimise mõttes oli sunflow jõudlustest. Koos TPTP profileerijaga ta jooksis umbes 300 korda aeglasemalt. HPROF’i ja Allocation Instrumenter’i tulemused ei olnud määrkimväärselt paremad. Ainult NetBeans profileerija said enam-vähem efektiivselt töötada sellel testil. Kõik läbi vaadatud lahendused, välja arvatud TPTP, kasutavad mälueraldamiste jälgmiseks baitkoodi manipuleerimist (ByteCode Instrumentation, BCI). Nad lisavad oma jälgimise meetodi väljakutse pärast iga objekti loomise baitkoodi (opcode new). TPTP oma tööks kasutab JVM TI sündmuseid. Erilist huvi pakkub Allocation Instrumenter Google’st. See raamistik võimaldab kirjutada mälueraldamiste jälgijat puhtas Java keeles. Potensiaalselt see teeb lahendus platvorimst sõltumatuks. Kuid veel eksisteerivad lahendamata probleeme jõudlusega. Minu tulevikuplaanis on aru saada, kas saab teha mälueraldamiste jälgimist.
Lõputöö keel
inglise
Lõputöö tüüp
Bakalaureus - Informaatika
Juhendaja(d)
Vladimir Šor
Kaitsmise aasta
2012
 
PDF Lisad