Usuario anónimo ¿Quieres tener tu propio blog?
Crear blog gratis en OboLog

Optimizando aplicaciones J2ME (I) - Memoria

martes, 30 de septiembre del 2008 a las 16:55
guardado en

No es lo mismo realizar aplicaciones para un Core 2 Duo que para un módulo embebido, como puede ser un módem Siemens / Cinterion TC65 ó XT65. Cuando desarrollamos aplicaciones para PCs convencionales, aunque debiéramos intentar optimizarlas, no vamos a notar grandes diferencias si gastamos unos cuantos cientos de KBytes de Ram más o menos, pues a día de hoy casi todo los ordenadores tienen de 1GB de Ram para arriba ni tampoco es crucial si no está todo lo optimizado que pudiera estar el código, cuando estamos hablando de procesadores a 3GHz. Esto es cambio, sí es muy importante para pequeños dispositivos embebidos.




Optimizando aplicaciones J2ME (I) - Memoria

Escrito por: blogElectronica en 4.PROGRAMACIÓN

No es lo mismo realizar aplicaciones para un Core 2 Duo que para un módulo embebido, como puede ser un módem Siemens / Cinterion TC65 ó XT65. Cuando desarrollamos aplicaciones para PCs convencionales, aunque debiéramos intentar optimizarlas, no vamos a notar grandes diferencias si gastamos unos cuantos cientos de KBytes de Ram más o menos, pues a día de hoy casi todo los ordenadores tienen de 1GB de Ram para arriba ni tampoco es crucial si no está todo lo optimizado que pudiera estar el código, cuando estamos hablando de procesadores a 3GHz. Esto es cambio, sí es muy importante para pequeños dispositivos embebidos.

Para el caso de los módulos embebidos hay dos maneras básicas de incrementar el rendimiento de las aplicaciones. Una es tener cuidado con el uso de la memoria, evitando utilizar más memoria de la necesaria. La otra es el tiempo de ejecución del código que implementamos. Por ejemplo en java, al igual que en cualquier lenguaje orientado a objetos, la creación y destrucción de objetos necesita de tiempo de procesador, además de requerir memoria cada objeto instanciado.

Voy a poner una serie de posts breves, por capítulos, sobre cosas a tener en cuenta a la hora de realizar aplicaciones J2ME, para obtener un mejor rendimiendo de las mismas.

Optimizar aplicaciones J2ME


Gestión de la memoria.

Como decía antes, la memoria de un dispositivo embebido es limitada y hay que tener especial cuidado con su uso. Si no tienes cuidado te puedes encontrar una excepción del tipo . Puedes pensar que tal vez lo mejor es ir liberando la memoria que vas dejando de usar (Garbage collector), pero eso va a tener un impacto negativo en tus programas, pues la liberalización de memoria por parte del Garbage Collector también requiere de un tiempo precioso de procesador.
 
 
¿Entonces, qué puedo hacer?

Lo mejor es optimizar el código usando sólo la memoria que necesites utilizar y evitando el crear y el destruir continuamente objetos, es decir, escoger bien qué objetos y cuando vamos a crearlos.
 
 
¿Es posible saber qué memoria tengo libre en un momento determinado en mi programa?

Sí, utilizando los métodos freeMemory() y totalMemory() de Runtime. Con freeMemory() podrás saber de cuanta memoria libre dispones para crear objetos en tu aplicación, mientras que con totalMemory() puedes saber el total de memoria en la KVM, es decir, en la máquina virtual de java.
 
 
Veámoslo con un ejemplo:

Runtime rt = Runtime.getRuntime();
long memoriaAntes=0, memoriaDespues=0, memoriaConsumida=0;
System.gc();
memoriaAntes = rt.freeMemory();
MiObjeto obj = new MiObjeto();
memoriaDespues = rt.freeMemory();
memoriaConsumida = before - after;

Con un ejemplo como el anterior podemos ver cual es el coste en memoria que tiene crear una nueva instancia de un objeto (objeto MyObject).  De todas maneras para medir bien la memoria en el ejemplo tendríamos que añadir un “new MiObjeto();” justo antes de la llamada al Garbage Collector “System.gc();”  , que como sabéis, sirve para liberar memoria de aquellos objetos que ya no son referenciados en el programa. Esto es porque la máquina virtual java necesita leer el código de la clase MiObjeto antes de crear la primera instancia. Si no se pone la medida no será precisa.
 
 
Resumen del capítulo I:

- Tener cuidado con el uso de memoria. Usar la justa.
- Utilizar los métodos freeMemory() y totalMemory() para saber el estado actual de la memoria Ram.
 
 
Espero que lo hayáis encontrado interesante. En breve más

visto en:www.blogelectronica.com/optimizar-j2me-memoria/#more-251 ;)

Deja tu comentario sobre Optimizando aplicaciones J2ME (I) - Memoria

Deja tu comentario
Necesitas tener javascript activado para poder dejar comentarios

Identifícate en OboLog, o crea tu blog gratis si aún no estás registrado.

De esta forma, además, podrás mostrar tu imagen en los comentarios y no tendrás que rellenar tus datos cada vez.

Sobre esta anotación

jose oneris

jose oneris escribió esta anotación hace 1 año. En ella habla sobre Sss.

Aún no hay ningún comentario.

Tu podrías dejar el primero.

Temas relacionados

Login

Comentarios

Steinberg Cubase Studio 4.1.1 Build 749 Portable (matias)
sabias de la corrupcion del intendente de Unquillo German Jalil, que trata de amenazar todo el ......(10 ago)
OS X tema para un Sony Ericsson K800i (oneris)
hola esta bien eso,  gracias fleshe mi cell. me funciono de maravilla...(30 nov)
el gestor Descarga aqui (oneris)
ya!!!!!!!!!!!!!!!!!!!!!! por fin!!!...(30 sep)

Más comentados

el gestor Descarga aqui (1)
R down.. es un gestor “automatico” de descarga en Rapidshare.. Trabaja con Firefox Solo ...
Steinberg Cubase Studio 4.1.1 Build 749 Portable (1)
Steinberg Cubase Studio 4.1.1 Build 749 Portable Cubase 4 - Advanced Music Production System - ...
OS X tema para un Sony Ericsson K800i (1)
OS X tema para un Sony Ericsson K800i Yesterday I finally received my new mobile phone, a Sony ...
instalação do equipamento. (0)
Com um microcontrolador PIC, alguns componentes e uma trilha de circuito impresso projetada para a ...
Optimizando aplicaciones J2ME (I) - Memoria (0)
No es lo mismo realizar aplicaciones para un Core 2 Duo que para un módulo embebido, como puede ser ...

Suscripción

Suscríbete al Feed RSS XML

También puedes suscribirte directamente con alguno de los siguientes enlaces:

  • Suscríbete en Bloglines
  • Suscríbete en Google