Clear Sky Science · es
Impacto de los hilos virtuales y la recolección de basura en la eficiencia energética de aplicaciones Java para dispositivos IoT alimentados por batería
Por qué importan los dispositivos diminutos y sus baterías
Desde pulseras de actividad hasta sensores inalámbricos en fábricas, cada vez más objetos que nos rodean son pequeños ordenadores que funcionan con baterías reducidas. Cuando esas baterías se agotan, suponen coste, molestias y residuos electrónicos. Este artículo examina una palanca sorprendentemente eficaz para alargar la vida de esas baterías: no una nueva CPU ni una química de batería, sino software más inteligente. Usando un dispositivo de tipo reloj inteligente como caso de prueba, los autores muestran cómo un estilo moderno de programación en Java puede ampliar la duración de la batería en aproximadamente un 40 por ciento sin cambiar el hardware.
Cómo el software habitual puede desperdiciar energía sin que lo notemos
Muchos dispositivos alimentados por batería pasan la mayor parte de su tiempo esperando: esperando a que se lea un pulso, a que se pulse un botón o a que se envíe un mensaje por Wi‑Fi. Los programas Java tradicionales gestionan estas tareas usando un hilo del sistema operativo por actividad y un estilo simple de “hacer esto, luego esperar”. Aunque resulta fácil para los programadores, mantiene el procesador despierto incluso cuando no tiene nada útil que hacer, y además provoca ráfagas inesperadas de trabajo cuando Java limpia memoria no usada. En un teléfono o un portátil enchufado a la corriente esto pasa mayormente desapercibido. En un reloj diminuto que debería funcionar todo el día con una batería ligera, esas activaciones y pausas adicionales consumen silenciosamente tiempo de funcionamiento.
Una nueva forma de hacer muchas tareas a la vez
Las versiones modernas de Java añaden dos herramientas clave que cambian este panorama. La primera son los “hilos virtuales”, que permiten al runtime de Java gestionar miles de tareas ligeras sobre solo unos pocos hilos de hardware reales. Cuando una tarea espera una respuesta de red o la lectura de un sensor, puede aparcarse de forma barata sin ocupar el procesador. La segunda es una nueva familia de recolectores de memoria de “baja latencia”, como ZGC, que reparten su trabajo en pequeños fragmentos en lugar de detener todo el programa en largas pausas. En conjunto, estas características permiten que el chip entre en sueño profundo con más frecuencia y durante períodos más largos, que es el estado de consumo más bajo disponible. En lugar de que el dispositivo esté medio despierto todo el tiempo, se despierta brevemente para trabajar y después vuelve rápidamente al reposo.

La historia de dos relojes inteligentes
Para ver cuánto importa esto en la práctica, los investigadores construyeron dos versiones de la misma aplicación simple de reloj inteligente. Ambas versiones leían periódicamente datos de ritmo cardíaco y los enviaban a un servicio en la nube por Wi‑Fi, un patrón común en wearables y otros dispositivos del Internet de las Cosas. La primera versión usó el estilo antiguo de bloqueo con hilos tradicionales y el recolector de memoria por defecto. La segunda empleó un estilo asincrónico orientado a eventos basado en hilos virtuales y el recolector ZGC. El hardware, la batería y la carga de trabajo se mantuvieron idénticos: una placa ARM Cortex‑M4 con un módulo Wi‑Fi, alimentada por una batería de polímero de litio de 1000 mAh, funcionando de forma continua durante 24 horas mientras instrumentos precisos registraban la corriente y la actividad del procesador.
Qué revelaron las medidas de consumo
El diseño heredado se comportó como una persona inquieta que no para de andar: el procesador permaneció activo alrededor del 85 por ciento del tiempo, incluso mientras esperaba la red, y el dispositivo solo alcanzaba un estado de sueño superficial. La corriente en reposo se situaba en torno a 50 miliamperios, con picos agudos por encima de 250 miliamperios durante el uso de la red y la recolección de memoria. Como resultado, la batería se agotó en unas siete horas. En cambio, el diseño moderno se comportó más como un velocista que trabaja en ráfagas cortas y luego descansa profundamente. Llamadas de red no bloqueantes y activaciones temporizadas permitieron al chip pasar aproximadamente el 70 por ciento del tiempo en sueño profundo, con corriente en reposo cercana a 5 miliamperios y trazas de potencia mucho más suaves. La corriente media cayó a unos 100 miliamperios y la vida medida de la batería aumentó a alrededor de diez horas: una mejora del 42 por ciento.

Lecciones prácticas para dispositivos más ecológicos
Más allá de este único reloj inteligente, el estudio extrae lecciones generales para quien construye dispositivos alimentados por batería. Diseños orientados a eventos y asincrónicos, combinados con métodos de comunicación ligeros y una planificación cuidadosa, permiten que los dispositivos permanezcan realmente apagados entre ráfagas de actividad. Las características modernas de Java facilitan escribir ese tipo de código sin sacrificar seguridad o portabilidad, y las pruebas mostraron que cientos de tareas pueden gestionarse con un incremento modesto en el consumo. En otras palabras, la eficiencia energética no solo consiste en elegir el chip adecuado: se trata de escribir software que trate el tiempo de sueño como la forma más alta de rendimiento. Para ciudades inteligentes, monitores médicos y sensores domésticos, esa mentalidad puede traducirse directamente en menos cambios de batería, menores costes y menos residuos.
Cita: 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
Palabras clave: Eficiencia energética IoT, duración de la batería, hilos virtuales de Java, software de bajo consumo, dispositivos tipo reloj inteligente