Go to content
SV På svenska

Deploying Memory Management Research in the Mainstream

Reference number
SM19-0059
Start and end dates
200101-221231
Amount granted
1 106 724 SEK
Administrative organization
Uppsala University
Research area
Information, Communication and Systems Technology

Summary

Managed languages like Java and JavaScript execute in a virtual machine (VM), which abstracts the underlying architecture and operating system. VMs typically handle things like allocation, security, linking and loading, and garbage collection (GC). GC is a key activity in modern programming languages that automates one of the most tedious and error-prone programming activities, namely resource management of the computer's memory, with benefits ranging from productivity to security. The goal of this project is to explore new techniques for garbage collection and memory management. Recently, the applicant has developed two new techniques for improving cache performance in GC-based languages, with promising results demonstrated on standard benchmarks in the academic setting. This project will explore the integration of these techniques in Oracle's Java language, the worlds most popular programming language with ~3 billion installations. The PI will collaborate with Oracle's GC team, located at Oracle's R&D facility in Stockholm. Informal discussion with members of the GC team have already identified two possible extensions following this integration, as well as an entirely new GC protocol building on the PI's past experience with thread-local heaps in Java. All of this will be explored as part of this project. In addition to knowledge transfer, the expected outcome is the integration of Uppsala-developed research in Java, resulting in performance and energy improvements.

Popular science description

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.