Clear Sky Science · ru
Влияние виртуальных потоков и сборки мусора на энергоэффективность Java-приложений для портативных устройств Интернета вещей
Почему важны крошечные гаджеты и их батарейки
От фитнес‑браслетов до беспроводных датчиков на заводах — всё больше предметов вокруг нас на самом деле представляют собой крошечные компьютеры, питаемые от крошечных батарей. Когда такие батареи разряжаются, это приносит расходы, неудобства и электронные отходы. В этой статье рассматривается удивительно мощный рычаг продления срока службы батарей: не новый чип и не химия аккумулятора, а более умное программное обеспечение. На примере устройства в стиле смарт‑часов авторы показывают, как современный подход к программированию на Java может увеличить время работы от батареи примерно на 40 процентов без изменения аппаратной части.
Как повседневное ПО незаметно расходует энергию
Многие устройства на батарейках большую часть времени находятся в режиме ожидания: ожидают снятия показателя пульса, нажатия кнопки или отправки сообщения по Wi‑Fi. Традиционные Java‑программы решают такие задачи, создавая по одному потоку операционной системы на каждое действие и применяя простой стиль «сделать — затем ждать». Это удобно для программистов, но держит процессор бодрствующим, даже когда делать ничего не нужно, и вызывает всплески работы при очистке неиспользуемой памяти. На телефоне или ноутбуке, подключённом к сети, это в основном незаметно. На крошечных часах, которые должны работать весь день от тонкой батареи, эти дополнительные пробуждения и паузы незаметно сокращают время работы.
Новый способ одновременно выполнять множество задач
Современные версии Java добавляют два ключевых инструмента, меняющих эту картину. Первый — «виртуальные потоки», которые позволяют среде выполнения Java переключать тысячи лёгких задач поверх нескольких реальных аппаратных потоков. Когда задача ждёт ответа сети или показания датчика, её можно недорого приостановить, не занимая процессор. Второй — новая семья сборщиков мусора с низкой задержкой, например ZGC, которые распределяют свою работу малыми порциями вместо того, чтобы останавливать программу на длительное время. Вместе эти возможности позволяют чипу чаще и дольше входить в глубокий сон — самое энергоэффективное состояние. Вместо того чтобы устройство постоянно находилось в полубодрствующем состоянии, оно просыпается лишь кратко для работы, а затем быстро возвращается в покой.

Две версии смарт‑часов
Чтобы понять, насколько это важно на практике, исследователи собрали две версии одного и того же простого приложения для смарт‑часов. Обе версии периодически считывали данные о частоте сердечных сокращений и отправляли их в облачный сервис по Wi‑Fi — типичный сценарий для носимых устройств и других устройств Интернета вещей. Первая версия использовала старый блокирующий стиль кода с традиционными потоками и стандартным сборщиком мусора. Вторая версия была событийно‑ориентированной, асинхронной, построенной на виртуальных потоках и сборщике ZGC. Аппаратная платформа, батарея и нагрузка оставались идентичными: плата ARM Cortex‑M4 с модулем Wi‑Fi, питавшаяся от литий‑полимерной батареи ёмкостью 1000 мА·ч и работавшая непрерывно в течение 24 часов при точной записи тока и активности процессора.
Что показали измерения потребления
Наследная (legacy) конструкция вела себя как нервный человек, постоянно расхаживающий по комнате: процессор оставался активным примерно 85 процентов времени, даже в периоды ожидания сети, и устройство могло входить только в поверхностный режим сна. Ток в простое держался около 50 миллиампер, с резкими пиками выше 250 миллиампер при использовании сети и сборке мусора. В результате батарея разрядилась примерно за семь часов. Для сравнения, современный дизайн вел себя скорее как спринтер: короткие всплески работы, затем глубокий отдых. Неблокирующие сетевые вызовы и пробуждения по таймеру позволили чипу проводить примерно 70 процентов времени в глубоком сне, с током простоя около 5 миллиампер и более сглаженными графиками мощности. Средний ток снизился до примерно 100 миллиампер, а время работы батареи увеличилось примерно до десяти часов — это улучшение примерно на 42 процента.

Практические выводы для экологичных устройств
Помимо примера со смарт‑часами, исследование выводит общие уроки для всех, кто разрабатывает устройства на батарейном питании. Событийно‑ориентированные, асинхронные архитектуры в сочетании с лёгкими методами общения и тщательным планированием позволяют гаджетам действительно оставаться выключенными между всплесками активности. Современные возможности Java упрощают написание такого кода без ущерба для безопасности и переносимости, и тесты показали, что сотни задач можно обслуживать с лишь умеренным дополнительным потреблением. Иными словами, энергоэффективность — это не только выбор правильного чипа; это написание программ, которые рассматривают время сна как высшую форму производительности. Для умных городов, медицинских мониторов и домашних датчиков такой подход означает меньше замен батарей, меньшие расходы и меньше отходов.
Цитирование: 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
Ключевые слова: энергоэффективность IoT, время работы от батареи, виртуальные потоки Java, низкопотребляющее ПО, смарт‑часы