Android java: OutOfMemory al insertar una gran lista en la base de datos SQL
Solo estoy trabajando en un proyecto de Android donde se usa un ORM greendao. Me permite insertar varias entidades (que obviamente son objetos) en la base de datos a la vez (en una transacción). En la práctica hay un método
insertOrReplaceInTx (...)
que toma como parámetro una colección, dada una Lista de objetos. El problema es que mi lista tiene una especie de 12000 objetos y una inserción lleva de vez en cuando a una excepción OutOfMemory. Estoy pensando en una forma inteligente de resolver el problema y prevenir futuros OOM. La única idea que me viene a la mente es dividir la gran colección en una especie de subcolecciones (digamos 500 elementos cada una) y comprometerme en un bucle haciendo varias confirmaciones pequeñas en lugar de una enorme. Lo malo de esto es que lleva más tiempo insertar los registros y el tiempo importa aquí. Al final, no estoy seguro si hacer commit después de commit no mata el montón de todos modos. Tal vez llame a un método sleep () en el medio para permitir que GC borre el montón ... pero me parece una especie de solución fea.
alguna idea inteligente de tu lado? gracias por adelantado