2010-05-24 5 views
4

J'ai un problème avec une application Java. En utilisant une JVM 64 bits (1.60.0_20) sous Windows Server 2008 r2 (64bit), l'application se bloque à 2 Go de mémoire allouée, elle ne dépassera pas cette marque même après avoir changé les paramètres JVM pour en allouer plus (-Xmx5000m) et attendre plus que 12 heures. C'est sur une instance EC2 avec une mémoire disponible de 7,5 Go.JVM s'arrête à 2 Go sous Windows Server 2008 R2

Répondre

1

Se bloque? Pas jette 'OutOfMemoryError'? Que se passe-t-il si vous commencez avec le tas à 2 Go ("-Xms2g -Xmx2g"), pouvez-vous démarrer l'application?

Je me demande si vous utilisez la mémoire disponible pour votre instance. Est-ce une petite instance? Il commencera à se débattre, en raison de l'échange, car la quantité de mémoire utilisée dépasse largement la mémoire physique disponible. Peut-être que vous avez besoin d'une instance de grande mémoire à la place.

+0

Eh bien, je n'ai pas essayé la configuration 2G, 2G, j'ai une instance de mémoire haute avec environ 4G Ram encore disponible. Il ne lance aucune exception d'aucune sorte. Il est juste assis là à regarder dans mon visage, sans vie et immobile! Est-ce qu'il doit faire quelque chose avec le GC? –

+0

Ma théorie est que l'application utilise activement plus de mémoire que de mémoire physique. Cela signifie que la machine permute/pagine constamment les pages de la mémoire sur le disque, ce qui ralentit tellement les choses qu'elle peut sembler bloquée. Je ne suis pas sûr de savoir comment vérifier cela sur Windows - est-ce dans le Gestionnaire des tâches/Performance? Charger? Il est également possible que ce soit du harcèlement et qu'il y ait un problème d'application qui provoque un blocage. –

+0

Eh bien merci pour la réponse, mais s'est avéré être quelque chose de plus sérieux. On dirait que le pool de threads a un problème. Mon application était une application threadée et elle se bloquerait car l'exécuteur du pool de threads n'attribuerait pas de nouveaux threads. –

Questions connexes