Clear Sky Science · de

Auswirkungen von virtuellen Threads und Garbage Collection auf die Energieeffizienz von Java-Anwendungen für batteriebetriebene IoT‑Geräte

· Zurück zur Übersicht

Warum winzige Geräte und ihre Akkus wichtig sind

Von Fitness‑Armbändern bis zu drahtlosen Sensoren in Fabriken: Immer mehr Alltagsgegenstände sind im Grunde kleine Computer mit kleinen Akkus. Wenn diese Akkus leer sind, bedeutet das Kosten, Aufwand und Elektroschrott. Dieses Papier untersucht einen überraschend wirkungsvollen Hebel, um diese Akkus länger halten zu lassen: nicht eine neue Chip‑ oder Batterietechnologie, sondern schlicht intelligenter Softwareeinsatz. An einem Smartwatch‑ähnlichen Gerät als Testfall zeigen die Autorinnen und Autoren, wie ein moderner Java‑Programmierstil die Akkulaufzeit um etwa 40 Prozent verlängern kann, ohne die Hardware zu ändern.

Wie Alltagssoftware still Energie verschwendet

Viele batteriebetriebene Geräte verbringen den Großteil ihrer Zeit im Warten: auf einen Herzschlag, auf das Drücken einer Taste oder auf eine Nachricht über WLAN. Traditionelle Java‑Programme bearbeiten solche Aufgaben mit einem Betriebssystem‑Thread pro Aktivität und einem einfachen „mach dies, dann warte“‑Ansatz. Das ist für Programmierende bequem, hält jedoch den Prozessor wach, selbst wenn nichts Nützliches zu tun ist, und führt zudem zu plötzlichen Arbeitsstößen, wenn Java ungenutzten Speicher bereinigt. Auf einem an die Steckdose angeschlossenen Telefon oder Laptop fällt das meist kaum auf. Auf einer winzigen Uhr, die mit einem dünnen Akku einen ganzen Tag laufen soll, nagen diese zusätzlichen Weckungen und Pausen jedoch unbemerkt an der Laufzeit.

Eine neue Art, viele Dinge gleichzeitig zu erledigen

Moderne Java‑Versionen bringen zwei Schlüsselwerkzeuge, die dieses Bild verändern. Erstens die „virtuellen Threads“, die der Java‑Laufzeit erlauben, Tausende leichter Aufgaben auf nur wenigen echten Hardware‑Threads zu multiplexen. Wenn eine Aufgabe auf eine Netzwerkantwort oder eine Sensorablesung wartet, kann sie kostengünstig geparkt werden, ohne den Prozessor zu blockieren. Zweitens eine neue Familie von „niedrig‑latenz“ Garbage Collectors, etwa ZGC, die ihre Arbeit in kleine Zeitscheiben aufteilen, statt das ganze Programm für lange Pausen anzuhalten. Zusammen ermöglichen diese Features, dass der Chip häufiger und länger in einen tiefen Schlafzustand fällt — dem energieärmsten Zustand. Statt dass das Gerät die ganze Zeit halbwach ist, weckt es kurz auf, arbeitet und kehrt dann schnell wieder zur Ruhe zurück.

Figure 1
Figure 1.

Eine Geschichte von zwei Smartwatches

Um zu sehen, wie groß der Unterschied in der Praxis ist, bauten die Forschenden zwei Versionen derselben einfachen Smartwatch‑App. Beide Versionen lasen periodisch Herzfrequenzdaten und sendeten sie per WLAN an einen Cloud‑Dienst — ein übliches Muster bei Wearables und anderen IoT‑Geräten. Die erste Version nutzte den älteren, blockierenden Code‑Stil mit traditionellen Threads und dem standardmäßigen Garbage Collector. Die zweite Version verwendete einen ereignisgesteuerten, asynchronen Stil auf Basis virtueller Threads und dem ZGC. Hardware, Akku und Arbeitslast blieben identisch: ein ARM Cortex‑M4‑Board mit WLAN‑Modul, gespeist von einem 1000‑mAh‑Lithium‑Polymer‑Akku, im 24‑stündigen Dauerbetrieb, während präzise Messgeräte Stromaufnahme und Prozessoraktivität aufzeichneten.

Was die Leistungs‑Messungen zeigten

Das Alt‑Design verhielt sich wie eine unruhige Person im ständigen Hin‑ und Hergehen: Der Prozessor war etwa 85 Prozent der Zeit aktiv, selbst während Wartezeiten im Netzwerk, und das Gerät erreichte nur einen flachen Schlafzustand. Der Leerlaufstrom lag bei rund 50 Milliampere, mit scharfen Spitzen über 250 Milliampere während Netzwerkaktivität und Speicherbereinigung. In der Folge war der Akku nach etwa sieben Stunden leer. Im Gegensatz dazu verhielt sich das moderne Design eher wie ein Sprinter, der in kurzen Stößen arbeitet und dann tief ruht. Nicht‑blockierende Netzwerkaufrufe und timer‑basierte Weckungen ermöglichten es dem Chip, etwa 70 Prozent der Zeit im Tiefschlaf zu verbringen, mit einem Leerlaufstrom nahe 5 Milliampere und deutlich glatteren Leistungsverläufen. Der durchschnittliche Strom sank auf etwa 100 Milliampere, und die gemessene Akkulaufzeit stieg auf rund zehn Stunden — eine Verbesserung um 42 Prozent.

Figure 2
Figure 2.

Praktische Lehren für grünere Geräte

Über diese einzelne Smartwatch hinaus zieht die Studie allgemeine Lehren für alle, die batteriebetriebene Geräte entwickeln. Ereignisgesteuerte, asynchrone Entwürfe, kombiniert mit leichten Kommunikationsmethoden und sorgfältiger Planung, erlauben es Geräten, zwischen Aktivitätsperioden tatsächlich ausgeschaltet zu bleiben. Moderne Java‑Features machen es einfacher, solchen Code zu schreiben, ohne Sicherheit oder Portabilität zu opfern, und die Tests zeigten, dass Hunderte von Aufgaben mit nur moderat erhöhtem Strombedarf handhabbar sind. Anders gesagt: Energieeffizienz ist nicht nur eine Frage der Auswahl des richtigen Chips — sie hängt davon ab, Software so zu schreiben, dass Schlafzeit als höchste Form von Leistung behandelt wird. Für Smart Cities, medizinische Überwachungen und Heimsensoren kann diese Denkweise direkt weniger Akkuwechsel, geringere Kosten und weniger Abfall bedeuten.

Zitation: 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

Schlüsselwörter: IoT Energieeffizienz, Akkulaufzeit, Java virtuelle Threads, stromsparende Software, Smartwatch‑Geräte