2010-07-25 11 views
1

J'essaye de profiler l'utilisation de mémoire d'un programme, mais je continue à obtenir une erreur de débordement de pile.Comment netbeans java profiler se bloque avec une erreur de débordement de tas à ~ 64mb?

Les paramètres de mémoire NetBeans J'utilise sont les suivantes:

-J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m 

Les paramètres de la mémoire du projet que je utilise sont les suivantes:

-Xms256m -Xmx512m 

Here is screen shot.

Je ne suis pas sûr d'où provient 65 mb. Quelqu'un peut-il m'aider s'il vous plaît?

Merci, Grae

PS: NetBeans 6.5

+0

Quelle version de Java utilisez-vous et quelle quantité de mémoire physique avez-vous dans votre boîte? –

Répondre

0

Vous n'avez pas mis -Xmx (taille maximale du tas.) Pour Netbeans lui-même, et la valeur par défaut est 64MB.

+0

Pas exactement. NetBeans ajuste le -Xmx dynamiquement, en fonction de votre mémoire physicall (par exemple sur ma machine de 4 Go, il définit le tas maximum à 768M) –

0

Cette casquette de 65M provient de votre application. Cela n'a rien à voir avec NetBeans. Vous devez augmenter le tas maximum pour votre application afin de vous débarrasser de cette OOME.

De plus, le nombre de générations survivantes augmente continuellement, indiquant une fuite de mémoire très probable.

+0

Connaissez-vous une référence comment faire avec Netbeans? Je veux dire trouver une fuite. D'après mes recherches, je pense que c'est un problème de classloader. –

+0

Tout d'abord, lorsque votre application se bloque, elle doit générer un vidage de pile qui peut être ouvert directement dans NetBeans ou tout autre tastape (MAT, par exemple). Là, vous pouvez localiser la classe qui fuit. Ensuite, essayez http://netbeans.org/kb/articles/nb-profiler-uncoveringleaks_pt1.html pour identifier le lieu d'allocation de vos instances qui fuient. –

+0

Merci, pour le lien –