Hoppa till innehåll
EN In english

Spridning av Minneshanteringforskning i IT-industrin

Diarienummer
SM19-0059
Start- och slutdatum
200101-221231
Beviljat belopp
1 106 724 kr
Förvaltande organisation
Uppsala University
Forskningsområde
Informations-, kommunikations- och systemteknik

Summary

Programspråk som Java och JavaScript exekverar i en virtuell maskin (VM) som abstraherar den underliggande arkitekturen och operativsystemet. VM'ar hanterar typiskt minnesallokering, säkerhetsaspekter, länkning, och skräpsamling (GC). GC är en nyckelaktivitet i de flesta moderna programspråk som automatiserar en av de mest invecklade och felbenägna aspekterna av systemutveckling -- hantering av programmets minne. Förutom att underlätta utveckling, blir program med GC också mindre sårbara ur ett säkerhetsperpektiv. Projekts mål är att utforska nya tekniker för GC och minneshantering. Sökanden har nyligen utvecklat två nya tekniker för att förbättra cache-prestanda i programspråk med GC. I en akademisk setting, med standard-benchmarks, är resultaten lovande. Projektet tar sin utgångspunkt i en integration av dessa tekniker med Oracle's programspråk Java, världens mest använda språk som uppskattningsvis är installerat på 3 miljarder enheter. Sökanden samarbetar med Oracle's GC-grupp som sitter på Oracles R&D-kontor i Stockholm. Interna diskussioner med medlemmar i GC-gruppen har redan identifierat ytterligare två utökningar av teknikerna, samt ett helt nytt GC-protokoll som kommer att utvecklas inom ramarna för projektet. Förutom kunskapsöverföringen är det förväntade resultatet av samarbetet, att forskningsresultat från Uppsala Universitet integreras i Java, med prestandaförbättringar och ökad energieffektivitet som följd.

Populärvetenskaplig beskrivning

Programspråk som Java och JavaScript exekverar i en virtuell maskin som abstraherar det underliggande systemet. Virtuella maskiner hanterar typiskt aktiviteter som minnesallokering, säkerhetsaspekter, länkning, och skräpsamling. Skräpsamling är en nyckelaktivitet i de flesta moderna programspråk som automatiserar en av de mest invecklade och felbenägna aspekterna av systemutveckling -- hantering av programmets minne. Förutom att underlätta utveckling, blir program med automatisk skräpsamling också mindre sårbara ur ett säkerhetsperpektiv. Målet med detta projekt är att utforska nya tekniker för GC och minneshantering i Java, världens mest använda programspråk (enligt flera rankningar, t.ex. TIOBE), med ca 3 miljarder installationer världen över. Programspråket ägs av Oracle, och projektet äger rum på den avdelning på Oracle där den relevanta tekniken för projektet utvecklas. Projektet tar sitt avstamp i en integration av teknologier utvecklade på Oracle och av sökanden, på Uppsala Universitet. Sökanden har nyligen utvecklat två nya tekniker för att förbättra cache-prestanda i programspråk med GC som har lovande resultat visavi standard-benchmarks, i en akademisk setting. Båda dessa tekniker använder en speciell metod som kallas "load barriers", som också används i en ny skräpsamlare på prototypstadiet på Oracle, vilket gör det möjligt att integrera dessa tekniker så att båda drar nytta av varandra. Som en följd av denna integration av den Uppsala Universitet-utvecklade teknologin, HGC/HCSGC, i Java, möjliggörs ett antal intressanta utökningar, som bygger vidare på den minnesseparation som ligger till grund för HGC/HCSGC. Dels kan separationen användas för att på ett säkert sätt låta flera virtuella maskiner dela samma minne, vilket kan användas för att dramatiskt minska uppstartstiden för många molntjänster; dels kan separationen användas för att komprimera enskilda objekt i minnet, eller sammanhängande datastrukturer, för att på så sätt effektivt sett minska minnesanvändandet i en applikation. Sist utforskas en helt ny metod för skräpsamling som integrerar delar av Oracles skräpsamlare med tidigare forskning från sökanden kring såkallat trådlokalt minne där garantier fastslagna av kompilatorn används för att effektivisera skräpsamling. Förutom kunskapsöverföringen är det förväntade resultatet av samarbetet, att forskningsresultat från Uppsala Universitet integreras i Java, med prestandaförbättringar och ökad energieffektivitet som följd.