Solución a problema con J9 y Palm

Tungsten E2Hace algún tiempo desarrolle una aplicación en J2ME para mi PDA específicamente la Tungsten E2 que funcionaba a la perfección pero luego de un tiempo empece a experimentar algunos problemas como recibir errores de “Fatal Exception” y lo cual me indicaba que reinicie, pase varios dias investigando a ver de que podía provenir el error con decir que hasta me toco chatear con soporte técnico de palm y dormir pocas horas con la preocupación, pero bueno di con la solución y la quiero compartir con Uds.
Uno de los primeros problemas que experimente (Inicio del proyecto) y que fue por la novatada de no gestionar bien la variables y los procesos en mi sistema me salia un error al sincronizar los datos a mi aplicación bueno esto se soluciono con un Hardreset en el equipo.
Pero luego de un tiempo me volvió a dar otro problema (luego de 6 meses) el cual me daba un “Fatal Exception” al usar mi sistema y si volvía a reiniciar el problema persistía intente hacer un hardreset como lo habia hecho anteriormente pero esto no lo soluciono y ahora aparecían otros errores al intentar cargar solo la máquina virtual el problema por lo general tenia los siguientes síntomas o mensajes:

  • Mensaje de error luego de la sincronización “DataMgr.c Line: 8878” y no cargaba el J9 en la palm.
  • VSFDBCache.c, Line: 4051, unattached record
  • Carga el J9 pero al querer configurarlo en la Palm recibía “Fatal Exception” o la pantalla se quedaba pegada o colgada.

Porque se da este error:

La KVM de java tiene un algoritmo para liberar memoria y reservarla para otros objetos que no desfragmenta la memoria utilizada y como que llega a saturar los espacios de memoria, como no encuentra memoria intenta escribir en la ROM como ya sabemos que no es posible y lanzara el error “DataMgr.c….”.
El problema de este algoritmo es que no relaciona espacios de memoria libres, aunque sean vecinos, y por lo tanto produce una gran fragmentación de la memoria.
Una de las sugerencias es liberar todos los espacios de memoria y apuntarlos a null o en su defecto si son enteros encerarlos para ayudar de cierta manera el Garbage Collector.

Solución:

  • Realizar un warm reset y luego un software reset

Que es lo que se logra con este warm reset o tambien conocido como software reset es evitar que al reiniciar no cargue las extensiones (los hacks, programas gestores de hacks, parches del SO, preferencias e alamas, etc). Entonces evitaremos que todo lo que haya estado ocupando este programa no se cargue y como que de cierto modo se libere todo sus consumos de memoria.

Si tiene dudas de como se hace un hard reset o un warm reset lo puedes ver en la sección Palm de este blog además de algunos estrategias para desarrollar aplicaciones J2ME y optimizar el recurso de memoria.

Actualizado: Este detalle es bien importante no olvidarlo, una vez realizado los pasos anteriores realizas un hard-reset y restauras los datos desde un respaldo anterior que hayas tenido para que se sobreescriba cualquier archivo, aplicación o base de datos y de esta manera evitar este tipo de errores, tambien puedes probar a cambiar de usuario de sincronización para el PDA, con esto logras que se regeneren todas las aplicaciones para el nuevo usuario.

Saludos y espero les sea de mucha utilidad.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s