Test fichiers mappés windows
Bonjour, J'ai effectué une série de test pour tenter de cerner la cause de l'erreur "java.lang.OutOfMemoryError: Map failed" sous windows. Test isis: * Windows 7 64 bits * Java 7 32 bits * Base cam2_rv2 * Population merluccius * 10 ans * 1Go de mémoire * Résultat : matrixDiscardsPerStrMetPerZonePop,matrixAbundance,matrixBiomass La simulations tourne, une erreur se produit seulement quand les résultats sont lus pour être visualisé ou exporté. Test de variations des paramètres mémoires: -Xmx1024M: java.lang.OutOfMemoryError: Map failed -Xmx1600M: Could not reserve enough space for object heap -Xmx1500M: java.lang.OutOfMemoryError: Map failed -Xmx500M: OK -Xmx1024M -XX:MaxDirectMemorySize=64M (valeur par defaut) java.lang.OutOfMemoryError: Map failed -Xmx1024M -XX:MaxDirectMemorySize=256M java.lang.OutOfMemoryError: Map failed -Xmx1024M -XX:MaxDirectMemorySize=1024M java.lang.OutOfMemoryError: Map failed -Xmx1024M et org.nuiton.math.matrix.DoubleBigMappedVector (valeur par defaut) java.lang.OutOfMemoryError: Map failed -Xmx1024M et org.nuiton.math.matrix.DoubleBigVector OK -Xmx1500M et org.nuiton.math.matrix.DoubleBigVector OK Donc le paramètre "-XX:MaxDirectMemorySize" n'a aucune incidence pour sur la mémoire des fichiers mappés. Pour Oracle [1], ce n'est ni résolvable, ni configurable car c'est Windows qui échoue dans l'allocation mémoire (si j'ai bien compris il ne peut pas allouer une zone contigue de mémoire). Si on n'utilise pas de mémoire mappé, cette erreur ne peux plus se produire (DoubleBigVector pour les matrices). Donc la solution pour windows et au moins dans le cas de la compléxité de la base cam2_rv2 et de configurer l'option mapped.result.matrix.vector.class à org.nuiton.math.matrix.DoubleBigVector pour ne pas utiliser la mémoire mappée. [1] : http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6776490 -- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
On Sun, 02 Dec 2012 19:49:28 +0100 Eric Chatellier <chatellier@codelutin.com> wrote:
Donc la solution pour windows et au moins dans le cas de la compléxité de la base cam2_rv2 et de configurer l'option mapped.result.matrix.vector.class à org.nuiton.math.matrix.DoubleBigVector pour ne pas utiliser la mémoire mappée.
Je dirais que potentiellement, elle devrait etre la config par defaut (org.nuiton.math.matrix.DoubleBigVector), car sur la plupart des bases de données c'est elle qui fonctionnera. Les gens qui passeront sur autre chose doivent savoir ce qu'ils font et les impacts -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com http://www.codelutin.com
Le 06/12/2012 11:59, Benjamin POUSSIN a écrit :
On Sun, 02 Dec 2012 19:49:28 +0100 Eric Chatellier <chatellier@codelutin.com> wrote:
Donc la solution pour windows et au moins dans le cas de la compléxité de la base cam2_rv2 et de configurer l'option mapped.result.matrix.vector.class à org.nuiton.math.matrix.DoubleBigVector pour ne pas utiliser la mémoire mappée. Je dirais que potentiellement, elle devrait etre la config par defaut (org.nuiton.math.matrix.DoubleBigVector), car sur la plupart des bases de données c'est elle qui fonctionnera. C'est commité (par defaut DoubleBigVector).
-- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
participants (2)
-
Benjamin POUSSIN -
Eric Chatellier