Cómo evitar parones con Java 8 y OS X El Capitan o macOS Sierra

0
1686

En este tutorial aprenderemos a solucionar los parones que puedes experimentar en OS X El Capitan y macOS Sierra y las últimas versiones de la Máquina Virtual Java (JVM).

1. Introducción

Con OS X El Capitan y macOS Sierra y las últimas versiones de la Máquina Virtual Java (JVM) puede ser que en tu ordenador experimentes ciertos «parones», como si la JVM se quedara congelada durante dos o tres segundos. No pasa siempre, pero es bastante molesto. Nosotros en concreto lo hemos detectado:

  • Cuando depuras (si en vez de depurar haces una ejecución normal no ocurre) un test o aplicación desde el IntelliJ. No es culpa del IntelliJ, pero lo hemos detectado en esta situación porque justo al darle a «depurar» se ve como todo el entorno se queda como congelado durante dos segundos hasta que de verdad empieza la depuración del test o aplicación.

  • Cuando se arranca una aplicación (en nuestro caso concreto una aplicación con SpringBoot). De nuevo no tiene nada que ver ni con IntelliJ ni con SpringBoot.

En estas dos situaciones que he comentado se hace muy notable este problema ya que son procesos muy rápidos y de repente vemos como se «eternizan» al quedarse congelado todo el entorno.

En general pasa con más procesos, por ejemplo una compilación de un proyecto completo con Maven, pero al ser un proceso más largo, esta pequeña parada puede pasar desapercibida.

En este tutorial vamos a ver un workaround para solucionarlo.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15» (2.9 GHz Intel i7, 16GB 2133 MHz LPDDR3, 500GB Flash Storage).

  • AMD Radeon Pro 460 4096 MB

  • Sistema Operativo: macOS Sierra 10.12.2

  • Java 1.8.0_112

  • Maven 3.3.9

  • IntelliJ IDEA 2016.3.2

3. El problema es del DNS

Pues sí, aunque parezca raro, el problema parece que es del DNS, que se queda bloqueado cuando intenta resolver el dominio localhost

Esto sólo pasa con las últimas versiones de OS X El Capitan y posteriores (macOS Sierra) en conjunción con las últimas versiones de la JVM, aunque no se precisar versiones concretas.

Por ahora el workaround es modificar el /etc/hosts (recomiendo Gas Mask) y aseguraos de que tenéis la siguiente línea:

127.0.0.1       localhost     <hostname>.local

Ojo porque es importante tenerlo en la misma línea, si lo separáis en dos líneas no se soluciona el problema!

Donde <hostname> es el nombre de vuestro equipo. Lo podéis ver si abrís un Terminal y ejecutáis el comando:

$ hostname

Más información en: https://youtrack.jetbrains.com/issue/IDEA-157303

Muy recomendable hacerlo!!!

4. Conclusiones

Cuando de repente contempleis un comportamiento anómalo o diferente siempre hay una explicación, ya que, aunque a veces no lo parezca, los ordenadores son sistemas deterministas (el problema es que a veces intervienen tantas variables que resulta casi imposible saber lo que está pasando). Por eso lo mejor es Googlear un poco ya que somos muchos y casi nunca seremos los primeros en haberlo descubierto.

Por eso siempre, tranquilidad y cabeza para tirar de logs, tener claro el caso que reproduce el problema, descartar alternativas, buscar por Internet casos similares, y finalmente arreglar y documentar 😉

5. Sobre el autor

Alejandro Pérez García (@alejandropgarci)
Ingeniero en Informática (especialidad de Ingeniería del Software) y Certified ScrumMaster

Socio fundador de Autentia Real Business Solutions S.L. – «Soporte a Desarrollo»

Socio fundador de ThE Audience Megaphone System, S.L. – TEAMS – «Todo el potencial de tus grupos de influencia a tu alcance»

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad