Teknologi

Java 27 fjerner GC-en som frøs apper og kutter objektminne med 33%

Adrian Kessler
Legg oss til på Google

Java 27 kommer med to endringer som stille vil nå hver JVM som kjører noe sted. G1-søppeltømmeren er nå standard på alle Java-kjøringer – og avslutter dermed den stop-the-world Serial-søppeltømmeren på begrenset maskinvare – og objekthodene er krympet fra 96 bits til 64 bits, noe som kutter overheaden med en tredel for enhver applikasjon som oppretter et betydelig antall objekter.

Serial-søppeltømmeren var Javas eldste GC: enkel, forutsigbar og brutal. Når den kjørte, frøs den hele applikasjonen til heapen var renset. På servere med stor minne og flere CPU-er ble den avveiningen uholdbar for år siden – G1 erstattet Serial som standard for servere fra Java 9. Begrensede miljøer fortsatte å kjøre Serial gjennom Java 26: en-CPU-maskiner, små sky-VM-er, innebygde systemer med lite minne. Den standarden slutter med Java 27.

G1 deler heapen inn i små regioner og samler dem inn inkrementelt, og prioriterer seksjonene med mest søppel først – derav Garbage-First. Pausene finnes fortsatt, men de er kortere og mer forutsigbare enn en full Serial-innsamling. Oracle opplyser at G1 nå er konkurransedyktig med Serial på alle heap-størrelser. For utviklere som kjører applikasjoner på de billigste tilgjengelige skyinstansene – én CPU, én gigabyte RAM – fjerner Java 27 en friksjon de har levd med i årevis.

Endringen med kompakte objekthoder er den andre halvdelen av denne utgivelsen. Java-objekter bærer metadata – typeinformasjon, hashkoder, låsestatus – lagret i et hode festet til hvert objekt. Det gamle formatet brukte 96 bits. Java 27 komprimerer dette til 64 bits, en reduksjon på 33 % per objekt. For applikasjoner som oppretter millioner av objekter – meldingskøer, finansielle hovedbøker, hendelsesdrevne mikroservicer – er den kumulative effekten målbar: tettere heap, bedre CPU-cache-utnyttelse, færre nødvendige innsamlingssykluser.

Begge endringene har forbehold. Applikasjoner som er eksplisitt optimalisert for Serial GC-atferd, kan oppleve uventede tidsforskjeller etter oppgradering. G1 bruker mer minne til bokføring enn Serial, noe som betyr noe i miljøer med virkelig stramme minnebudsjetter – selv om Oracle-tester viser at gjennomstrømningsavveiningen er ubetydelig for de fleste arbeidsmengder. Utviklingsteam som distribuerer Java 27 på begrensede systemer, bør teste mot de nye standardinnstillingene før lansering. Overgangen er automatisk, men den er ikke usynlig.

Java 27 legger også til post-kvantum hybrid nøkkelutveksling for TLS 1.3, og implementerer ML-KEM-algoritmen sammen med den eksisterende X25519 elliptisk kurve-utvekslingen. TLS-forbindelser som forhandles i dag, kan i teorien bli fanget opp og dekryptert senere av en fremtidig kvantedatamaskin. Hybrid nøkkelutveksling forsvarer mot dette ved å kreve at en angriper bryter både en klassisk og en post-kvantum-algoritme samtidig – et meningsfullt tillegg for enhver Java-tjeneste som håndterer sensitive data.

Java 27 ble utgitt 15. september 2026, i tråd med plattformens seksmånedersrytme. Strukturert samtidighet og late konstanter fortsetter som forhåndsvisningsfunksjoner i denne versjonen. Den neste langtidsstøtteutgivelsen i Java-serien forventes i 2027.

Tagger: , , , , ,

Legg oss til på Google

Diskusjon

Det er 0 kommentarer.