Causés par: java.lang.OutOfMemoryError: Java heap space
MON OBJECTIF:
Je veux exécuter mon application pour 1000 utilisateurs.
MAINTENANT
Je suis en train de lancer de 100 utilisateurs. Au cours de l'exécution de l'application, j'aimerais faire quelques processus pour chaque utilisateur aura un minimum d'une heure par utilisateur, donc je suis en utilisant un thread par l'utilisateur.
ERREUR
Caused by: java.lang.OutOfMemoryError: Java heap space
J'ai essayé de comprendre ce que cela signifie, mais je ne suis pas vraiment sûr de savoir comment le résoudre.
Quelqu'un peut-il m'aider?
Il semble ur utilise plus de mémoire que vous avez
OriginalL'auteur Ganesa Vijayakumar | 2012-08-06
Vous devez vous connecter pour publier un commentaire.
Cette erreur signifie que votre programme a besoin de plus de mémoire que votre JVM autorisé à utiliser!
Par conséquent, vous avez à peu près deux options:
-Xmx
option (par exemple pour une résolution 1024 MO:-Xmx1024m
)Comme Peter Lawrey a souligné, à l'aide d'un profileur de voir ce que votre programme est en train de faire dans de telles situations est généralement une bonne idée.
OriginalL'auteur Jean Logeart
Utiliser un producteur/consommateur, modèle avec un nombre limité de threads de travail.
100+ threads est ridicule - pas étonnant que votre application est en train d'exploser.
Désolé, mais 100+ threads d'exécution du PROCESSEUR de 100% pour un minimum de 1 heure chaque est ridicule et non productif. Vous voulez à peu près pas plus de threads que de Processeurs pour le PROCESSEUR de traitement liés. Ceux de nombreux threads dans un conteneur J2EE sont pratiquement tous endormis et y sont conservées que pour préserver l'état, de sorte que quand ils (parfois) éveillé pour faire un travail qu'ils peuvent répondre immédiatement.
Oui, 100 threads en cours d'exécution simultanément pour plus de 1-2 secondes est déjà fou. J'étais simplement en soulignant que 100+ threads sont pas un problème si une grande partie d'entre eux est le sommeil, comme dans les cadres que j'ai décrit ci-dessus.
OriginalL'auteur Bohemian
Vous n'avez fourni aucune information qui indique que le problème est très différent de toutes les réponses dans StackOverflow concernant cette erreur soit;
-mx
ou-Xmx
Je soupçonne que, puisque vous voulez 1000 utilisateurs pour exécuter des processus qui prennent une heure chaque, vous pourriez avoir besoin de plus de ressources que vous avez. par exemple, 1000 cœurs, peut-être? Je vous suggère de regarder à quel point le matériel dont vous avez besoin en fonction de la CPU, mémoire, e /s disque et réseau IO qui est nécessaire pour exécuter les utilisateurs à un niveau acceptable par exemple, 20 utilisateurs et de nombreuses que par 50.
OriginalL'auteur Peter Lawrey
Vous pouvez essayer d'augmenter le segment de la JVM de l'espace lorsque vous lancez votre application. Vous pouvez essayer de régler à 2 go avec
-Xmx2g
. Si vous exécutez une version 32 bits de Java, je pense que 2 GO est aussi haut que vous pouvez aller, mais si vous avez une JVM 64 bits, vous devriez être en mesure d'aller plus haut.Edit:
Exemple:
java -Xmx2g MyApp
OriginalL'auteur DaoWen
Je vais vérifier 2 zones où il y a de l'erreur de mémoire
OriginalL'auteur Kamal