Clear Sky Science · pl
Wpływ wirtualnych wątków i zbierania śmieci na efektywność energetyczną aplikacji Java dla zasilanych bateryjnie urządzeń IoT
Dlaczego małe urządzenia i ich baterie mają znaczenie
Od opasek fitness po bezprzewodowe czujniki w zakładach, coraz więcej przedmiotów wokół nas to naprawdę małe komputery zasilane niewielkimi bateriami. Gdy te baterie padają, oznacza to koszty, kłopoty i elektroniczne odpady. Artykuł analizuje zaskakująco silny dźwigniowy czynnik wydłużający żywotność baterii: nie nowy układ scalony ani chemia ogniw, lecz po prostu mądrzejsze oprogramowanie. Na przykładzie urządzenia w stylu smartwatcha autorzy pokazują, jak nowoczesny styl programowania w Javie może wydłużyć czas pracy na baterii o około 40 procent bez żadnej zmiany w sprzęcie.
Jak zwykłe oprogramowanie może potajemnie marnować energię
Wiele urządzeń zasilanych bateriami spędza większość czasu na czekaniu: oczekując odczytu tętna, naciśnięcia przycisku czy wysłania komunikatu przez Wi‑Fi. Tradycyjne programy Java obsługują te zadania, wykorzystując po jednym wątku systemowym na aktywność i prosty styl „zrób to, potem czekaj”. Choć to ułatwia pracę programistom, utrzymuje procesor w stanie aktywności nawet gdy nie ma nic pożytecznego do zrobienia, a dodatkowo wywołuje nagłe serie działań, gdy Java sprząta nieużywane obiekty. Na telefonie czy laptopie podłączonym do prądu przechodzi to zwykle bez zauważenia. Na małym zegarku, który ma pracować cały dzień z wąskiej baterii, te dodatkowe wybudzenia i pauzy dyskretnie skracają czas pracy.
Nowy sposób wykonywania wielu zadań jednocześnie
Nowe wersje Javy wprowadzają dwa kluczowe narzędzia, które zmieniają ten obraz. Pierwsze to „wirtualne wątki”, które pozwalają środowisku wykonawczemu Javy zarządzać tysiącami lekkich zadań na zaledwie kilku prawdziwych wątkach sprzętowych. Gdy zadanie czeka na odpowiedź z sieci lub odczyt z czujnika, może być tanio zaparkowane bez blokowania procesora. Drugie to nowa rodzina „niskolatencyjnych” kolektorów pamięci, takich jak ZGC, które rozkładają swoją pracę na drobne fragmenty zamiast zatrzymywać cały program na długie pauzy. Razem te cechy pozwalają układowi częściej i dłużej przechodzić w głęboki sen, co jest stanem o najniższym zużyciu energii. Zamiast urządzenia będącego cały czas półprzytomnego, urządzenie budzi się krótko do pracy, po czym szybko wraca do spoczynku.

Historia dwóch smartwatchy
Aby sprawdzić, ile to daje w praktyce, badacze zbudowali dwie wersje tej samej prostej aplikacji smartwatcha. Obie wersje okresowo odczytywały dane tętna i wysyłały je do usługi w chmurze przez Wi‑Fi — to powszechny wzorzec w urządzeniach noszonych i innych urządzeniach Internetu Rzeczy. Pierwsza wersja używała starszego, blokującego stylu z kodem opartym na tradycyjnych wątkach i domyślnym mechanizmie zbierania pamięci. Druga wersja stosowała zdarzeniowy, asynchroniczny styl oparty na wirtualnych wątkach i kolektorze ZGC. Sprzęt, bateria i obciążenie były identyczne: płytka ARM Cortex‑M4 z modułem Wi‑Fi, zasilana baterią litowo-polimerową 1000 mAh, działająca ciągle przez 24 godziny podczas gdy precyzyjne instrumenty rejestrowały pobór prądu i aktywność procesora.
Co ujawniły pomiary mocy
Projekt oparty na starszym podejściu zachowywał się jak niespokojna osoba ciągle chodzi w tę i z powrotem: procesor pozostawał aktywny około 85 procent czasu, nawet podczas oczekiwania na sieć, i urządzenie mogło osiągnąć jedynie płytki stan uśpienia. Prąd jałowy utrzymywał się w okolicach 50 miliamperów, z ostrymi skokami powyżej 250 miliamperów podczas korzystania z sieci i sprzątania pamięci. W efekcie bateria rozładowywała się w około siedem godzin. Dla odmiany nowoczesny projekt zachowywał się bardziej jak sprinter — pracuje w krótkich seriach, a potem odpoczywa głęboko. Nieblokujące wywołania sieciowe i wzbudzenia na timerze pozwoliły układowi spędzać około 70 procent czasu w głębokim śnie, z prądem jałowym bliskim 5 miliamperów i znacznie płynniejszym przebiegiem poboru mocy. Średni prąd spadł do około 100 miliamperów, a zmierzony czas pracy na baterii wzrósł do około dziesięciu godzin — poprawa o 42 procent.

Praktyczne lekcje dla bardziej ekologicznych gadżetów
Ponad pojedynczym smartwatchem, badanie wydobywa ogólne wnioski dla każdego, kto buduje urządzenia zasilane bateryjnie. Projekty zdarzeniowe, asynchroniczne, w połączeniu z lekkimi metodami komunikacji i starannym harmonogramowaniem, pozwalają gadżetom być naprawdę wyłączonym między seriami aktywności. Nowoczesne funkcje Javy ułatwiają pisanie takiego kodu bez rezygnacji z bezpieczeństwa czy przenośności, a testy wykazały, że setki zadań można obsłużyć przy tylko umiarkowanym dodatkowym poborze prądu. Innymi słowy, efektywność energetyczna to nie tylko wybór odpowiedniego układu — to pisanie oprogramowania, które traktuje czas spędzony na śnie jako najwyższą formę wydajności. Dla inteligentnych miast, monitorów medycznych i czujników domowych takie podejście może przekładać się bezpośrednio na mniej wymian baterii, niższe koszty i mniej odpadów.
Cytowanie: 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
Słowa kluczowe: efektywność energetyczna IoT, czas pracy na baterii, Java wirtualne wątki, oprogramowanie niskiego zużycia energii, urządzenia typu smartwatch