2011-06-07 19 views
7

En nuestra aplicación, les permitimos a los usuarios cargar/descargar datos a través de una hoja de Excel y utilizamos Apache POI para leer y escribir estas hojas de Excel.
Estábamos planeando migrar todas nuestras hojas xls a xlsx, pero nos enteramos durante el proceso que la huella de memoria de XSSF (para xlsx) a través de Apache POI es significativamente alta.Huella de memoria para una aplicación Java

Como resultado, hemos querido poner a prueba esta prueba y verificar que el cambio a xlsx no nos dará frecuentes excepciones de OutOfMemory. Cualquier puntero, sobre cómo podemos registrar eficazmente las huellas de memoria, mientras hacemos hincapié en probar esta funcionalidad con archivos de Excel (xlsx) más grandes.

Gracias!

+0

Posible duplicado de [este hilo] (http://stackoverflow.com/questions/756873/best-way-to-profile-memory-usage-in-a-java-application). Muchos de los perfiladores recomendados se mencionan en ese hilo. –

Respuesta

5

Un enfoque simple es utilizar una herramienta como jconsole o jvisualvm (que se envía con la JVM) para controlar manualmente el consumo de memoria.

También podría utilizar periódicamente la API runtime para medir el consumo de memoria.

4

Como se mencionó @Johan, puede utilizar un generador de perfiles o aprovechar alguna combinación de los métodos maxMemory,totalMemory, y freeMemory del Runtime. Si esos resultados indican que la huella de memoria es un problema, Apache POI ofrece another option con una huella más clara para XSSF. Es más difícil de usar, por lo que no recomendaría su uso a menos que los resultados de su perfil indiquen que debe hacerlo, pero podría ser útil.

Cuestiones relacionadas