2010-08-13 7 views
0

Je voudrais spécifier la quantité de mémoire utilisée lorsque -XX:+HeapDumpOnOutOfMemoryError argument VM est utilisé. Normalement, je contrôle la taille du tas en utilisant l'argument VM -Xmx<size>. Mais quand je fais cela, l'erreur de mémoire ne se produit jamais. Quelqu'un sait-il un moyen de spécifier un tel paramètre de sorte que lorsque la taille du tas (ou même la taille de la pile) atteint ce paramètre, l'erreur de mémoire insuffisante est levée et je peux obtenir le vidage de tas?-XX: + HeapDumpOnOutOfMemoryError spécifier la mémoire

Merci.

Répondre

0

-Xmx est la bonne façon de le faire avec -Xss pour la taille de la pile pour provoquer un StackOverflowException. Si vous n'obtenez pas le OutOfMemoryError attendu, vous devrez peut-être essayer des valeurs plus faibles pour -Xmx puisque la JVM tend à aller un peu au-delà de cette limite avant de lancer l'erreur et il semble ignorer tout ce qui est inférieur à 15m pour -Xmx.

0

Pour répondre à votre question plus précisément que ce qui a été fourni par X4U, il serait utile de savoir ce qui suit:

Question n ° 1: Lorsque vous définissez -Xmx, ce sont explicitement vous la mise à? Quelle est la différence entre les deux tailles de tas (avec et sans -Xmx). Je suppose que vous augmentez la taille du tas lorsque vous le définissez explicitement.

Question n ° 2: Votre programme se termine-t-il ou est-il exécuté pour toujours? S'il se termine et que vous ne voyez pas le MOO, il se peut que vous n'ayez pas de fuite, vous ne fournissez pas assez de mémoire à votre processus Java.