Clear Sky Science · sv

Påverkan av virtuella trådar och skräpsamling på energieffektiviteten hos Java‑applikationer för batteridrivna IoT‑enheter

· Tillbaka till index

Varför små prylar och deras batterier spelar roll

Från aktivitetsband till trådlösa sensorer i fabriker blir fler av föremålen runt oss små datorer som körs på små batterier. När de batterierna tar slut innebär det kostnad, besvär och elektroniskt avfall. Den här artikeln undersöker en förvånansvärt kraftfull metod för att få dessa batterier att räcka längre: inte en ny krets eller batterikemi, utan helt enkelt smartare mjukvara. Med en smartklocks‑liknande enhet som testfall visar författarna hur en modern Java‑programmeringsstil kan förlänga batteritiden med ungefär 40 procent utan att ändra hårdvaran alls.

Hur vardaglig mjukvara tyst kan slösa energi

Många batteridrivna enheter tillbringar större delen av sin tid i väntan: väntar på att en puls ska läsas, en knapp ska tryckas eller ett meddelande skickas över Wi‑Fi. Traditionella Java‑program hanterar dessa uppgifter genom att använda en operativsystemstråd per aktivitet och en enkel "gör detta, sänk sedan ner"‑stil. Det är lätt för programmerare, men håller processorn vaken även när den inte har något nyttigt att göra, och utlöser dessutom plötsliga arbetsutbrott när Java städar bort oanvänt minne. På en telefon eller laptop ansluten till elnätet märks detta mestadels inte. På en liten klocka som ska köras hela dagen på ett tunt batteri äter de extra uppvaknandena och pauserna tyst bort driftstiden.

Ett nytt sätt att göra många saker samtidigt

Moderna versioner av Java lägger till två nyckelverktyg som förändrar denna bild. Det första är "virtuella trådar", som låter Java‑körtiden jonglera tusentals lättviktiga uppgifter ovanpå bara några få verkliga hårdvarutrådar. När en uppgift väntar på ett nätverkssvar eller en sensormätning kan den parkeras billigt utan att binda upp processorn. Det andra är en ny familj av "låglatens"‑minnesrensare, såsom ZGC, som sprider sitt arbete i små skivor istället för att stoppa hela programmet för långa pauser. Tillsammans gör dessa funktioner att kretsen kan gå ner i djup sömn oftare och under längre perioder, vilket är det lägsta effektläget som finns. I stället för att enheten är halvvaken hela tiden vaknar den kort för att arbeta och återgår sedan snabbt till vila.

Figure 1
Figure 1.

En berättelse om två smartklockor

För att se hur stor skillnad detta gör i praktiken byggde forskarna två versioner av samma enkla smartklockapp. Båda versionerna läste periodiskt pulsmätningar och skickade dem till en molntjänst över Wi‑Fi, ett vanligt mönster i wearables och andra Internet of Things‑enheter. Den första versionen använde den äldre, blockerande kodstilen med traditionella trådar och standardinställd minnesrensning. Den andra versionen använde en händelsestyrd, asynkron stil byggd på virtuella trådar och ZGC‑rensaren. Hårdvara, batteri och arbetsbelastning hölls identiska: ett ARM Cortex‑M4‑kort med en Wi‑Fi‑modul, drivs av ett 1000 mAh litium‑polymer‑batteri, kördes kontinuerligt i 24 timmar medan precisa instrument registrerade strömförbrukning och processoraktivitet.

Vad effektmätningarna avslöjade

Det äldre designet betedde sig som en orolig person som ständigt går fram och tillbaka: processorn var aktiv cirka 85 procent av tiden, även under väntan på nätverket, och enheten nådde bara ett grunt sovläge. Viloströmmen låg runt 50 milliampere, med skarpa toppar över 250 milliampere under nätverksanvändning och minnesrensning. Som ett resultat urladdades batteriet på cirka sju timmar. Däremot betedde sig den moderna designen mer som en sprinter som arbetar i korta anfall och sedan vilar djupt. Icke‑blockerande nätverksanrop och timerbaserade uppvaknanden gjorde att kretsen kunde tillbringa ungefär 70 procent av tiden i djup sömn, med viloström nära 5 milliampere och mycket jämnare effektkurvor. Genomsnittlig ström sjönk till cirka 100 milliampere, och mätt batteritid ökade till ungefär tio timmar—en förbättring med 42 procent.

Figure 2
Figure 2.

Praktiska lärdomar för grönare prylar

Utöver denna enskilda smartklocka extraherar studien generella lärdomar för alla som bygger batteridrivna enheter. Händelsestyrda, asynkrona konstruktioner, kombinerade med lättviktiga kommunikationsmetoder och noggrann schemaläggning, låter prylar vara verkligt avstängda mellan aktivitetsanfallen. Moderna Java‑funktioner gör det enklare att skriva sådan kod utan att offra säkerhet eller portabilitet, och testerna visade att hundratals uppgifter kunde hanteras med endast måttlig extra strömförbrukning. Med andra ord handlar energieffektivitet inte bara om att välja rätt krets—det handlar om att skriva mjukvara som ser tid i vila som den högsta formen av prestanda. För smarta städer, medicinska monitorer och hemsensorer kan detta direkt översättas till färre batteribyten, lägre kostnader och mindre avfall.

Citering: Shanjai Kumar, S., Sanjai, B.N., Etheeswar Kaarthi, S. et al. Impact of virtual threads and garbage collection on energy efficiency of Java applications for battery powered IoT devices. Sci Rep 16, 13507 (2026). https://doi.org/10.1038/s41598-026-40112-6

Nyckelord: IoT energieffektivitet, batteritid, Java virtuella trådar, lågenergimjukvara, smartwatch‑enheter