Archive for the 'tutorial' Category

Java: Entendiendo los parámetros Xmx y Xms (parte I)

Recientemente he recibido una notificación del CPD donde uno de “mis clientes” alojan una aplicación web Java™ desarrollada por mi equipo advirtiéndome de que la misma estaba consumiendo grandes cantidades de memoria (más de 1 Gb) que aparentemente no se recuperaba (sube de modo gradual sin llegar a liberar).

La razón, lejos de ser un problema de la aplicación en cuestión, es más bien un comportamiento correcto acorde con los parámetros de configuración de la máquina virtual asignados por parte de los administradores del servidor de aplicaciones que, en concreto, eran -Xms500m -Xmx1700m.

Estos parámetros explican perfectamente este comportamiento. Veamos la teoría:

  • Xms: Indica el tamaño mínimo del heap que ha de reservar la máquina virtual.
  • Xmx: Indica el tamaño máximo del heap.

Veamos ahora que ocurre en la práctica:

1.- Añadimos el siguiente parámetro a la máquina virtual para poder monitorizar remotamente nuesta aplicación-cobaya:

-Dcom.sun.management.jmxremote

2.- Fijamos los parámetros Xmx y Xms por ejemplo así:

-Xmx512m
-Xms128m

3.- Ejecutamos la consola de Java usando el comando jconsole (viene de serie con el JDK) y nos conectamos el agente correspondiente a la aplicación a testear.

agente

4.- Ahora podemos ver, tras hacer click en la pestaña “memory” y meter caña a la aplicación en paralelo, la gráfica de memoria. Para los parámetros antes fijados dicha gráfica debería ser similar a esta.

-Xmx512m

-Xmx512m

Como se puede observar la memoria usada del heap va aumentando escalonadamente hasta aproximarse al especificado en el parámetro Xmx. Una vez llegado a lo alto del pico el GC limpia y el uso de memoria cae en picado para volver de nuevo a empezar el ciclo.

Si por ejemplo fijamos el parámetro Xmx a 128 megas el pico máximo sería precisamente un valor próximo a esa cantidad. La gráfica sería similar a la anterior aunque las iteraciones serían, como es lógico más cortas:

-Xmx128

-Xmx128

En próximos posts mostraré el comportamiento en casos de andar escasos de memoria, fijar valores muy bajos, como tunear estos parámetros, etc.

Diseñar con visión

Iteresante presentación sobre como diseñar la solución a un problema con visión.

Visto en http://www.ezran.org/blog/2008/10/designing-with-vision/

TIP: Descargar un sitio web completo con wget

En linuxjournal.com se indican los parámetros que el comando wget necesita para descargar un sitio web completo. No perderse los comentarios del tip que complementan la solución aportada por el autor del post.

Tutorial de iniciación a la electrónica embebida

Cuando estudié la carrera, hace ya algunos años, vi algo de electrónica pero a un nivel muy teórico (con Electronics Workbench) y ya ni me acuerdo. Desde hace algún tiempo he querido retomar el tema pero la verdad, nunca ha sabido por donde empezar hasta que encontré estos tutoriales de iniciación práctica a la electrónica. Tienen muy buen color.

Ahora “sólo” necesito un poco de tiempo (la parte más complicada). Ya os contaré mis avances.

*Nota: La imágen la he encontrado en este blog buscando fotos de circuitos en Google y me ha parecido muy cachonda. No he podido eviar ponerla.

Muerte por PowerPoint

He asistido a muchas (muchísimas) presentaciones en mi vida. Y he sido ponente en alguna que otra. Salvo raras excepciones me he aburrido en todas, incluso en las mías ;-).

Hay personas que son buenas comunicadoras por gracia divina. Otros nacimos con otros talentos, pero no precisamente con el don de la oración.

Ultimamente, debido a la pseudofinalización de un proyecto me ha tocado realizar unas cuantas demos y he estado buscando información de como hacerla del modo más ameno posible. E ntre los recursos que he encontrado este es el que me ha gustado.

Muertos por PowerPoint

Muertos por PowerPoint

*Nota:La presentación ya tiene algún tiempo. No es novedad pero me ha parecido interesante incluirlo en el blog.

Fuente (como casi siempre): del.icio.us

Nueva Refcardz disponible para descargar – JPA

La gente de DZone acaba de publicar una nueva refcardz. Las refcardz son unas excelentes guías de referencia rápida sobre diferentes temas relacionados con la programación. Esta vez es sobre JPA (Getting started with JPA ).

Precisamente llevo toda la mañana tratando de resolver un problemilla que tengo con OpenJPA… así que la guía me viene de maravilla 😉

Guía visual para el control de versiones

La gestión de configuración (SCM) es fundamental para llevar un proyecto a buen puerto. Antes de empezar a desarrollar es recomendable definir una política de control de cambios y versiones. A Visual Guide to Version Control es una guía visual muy recomendable para comprender como funciona un sistema de control de versiones. Esta orientada sobre todo a Subversion, en mi opinión el nuevo estándar de facto para el control de versiones (desbancando a CVS).


Add to Technorati Favorites
Clicky Web Analytics Clicky

Flickr Photos