¿Cómo se optimiza el uso del tamaño de almacenamiento dinámico de una aplicación que tiene muchos (millones) de objetos de larga duración? (Caché grande, cargando un montón de registros de una base de datos)¿Cómo hace que la memoria de su aplicación Java sea eficiente?
- utilizar el tipo de datos de la derecha
- Evitar java.lang.String para representar otros tipos de datos
- Evita duplicar objetos
- Usar enumeraciones si los valores se conocen de antemano
- Usar conjuntos de objetos
- String.intern() (buena idea?)
- Cargar/guardar sólo los objetos que necesita
Busco programación general o respuestas específicas Java. Sin un modificador de compilador original.
Editar:
Optimizar la representación memoria de un POJO que puede aparecer millones de veces en el montón.
Los casos de uso
- carga un enorme archivo csv en la memoria (convertido en POJOs)
- Uso de hibernación para recuperar millones de registros de una base de datos de
Hoja de vida de respuestas:
- Utilice el diseño flyweight
- Copiar al escribir
- En lugar de cargar objetos 10M con 3 propiedades, ¿es más eficiente tener 3 matrices (u otra estructura de datos) del tamaño 10M? (Podría ser una molestia manipular datos, pero si realmente le falta la memoria ...)
escribiendo su programa en el montaje ... :) –
dudo que ayudaría ensamblador - tiempo de desarrollo sería significativamente más tiempo y no sería multiplataforma. ;) – Fortyrunner
@Fortyrunner Sospecho que Desmond estaba haciendo una broma. –