J'ai rencontré un problème de mémoire dans mon application.Quelles sont les causes possibles de "java.lang.OutofMemoryError" dans un thread en cours d'exécution?
Dans l'une de mes exécutions de threads, il y a un java.lang.OutofMemoryError
soudain et faire mourir les threads.
J'ai déjà sélectionné la taille du tas mémoire pour l'application est 20M. J'ai jeté l'utilisation de la mémoire pour l'ensemble de l'application avant et après ce MOO sur ce thread se produit, il ne dépasse pas 20M.
Je ne sais pas comment résoudre ce problème.
Alors, quelles sont les causes possibles de cela java.lang.OutofMemoryError
? et y a-t-il une méthode à prendre si je ne connais pas la raison exacte?
Voici ce que j'ai! Avant cette utilisation de la mémoire de l'application est 8M
après cette utilisation de la mémoire de l'application est également 8M.
Il existe de nombreuses causes potentielles. Dans un premier temps, pourriez-vous poster les détails de l'erreur; dites la cause. – kipz
OOM se produit généralement lorsque vous essayez d'allouer un bloc de mémoire qui ne peut pas entrer dans une région contiguë du tas. Donc, avoir votre utilisation totale de la mémoire <20M ne signifie pas que vous n'obtiendrez pas (ou ne devriez pas) obtenir une exception de MOO. Pouvez-vous poster du code et la trace de la pile? – dlev
Sur quelle version de Java travaillez-vous? Les versions plus récentes vous permettent de capturer plus d'informations. Vous pouvez également essayer d'ajouter -XX: + HeapDumpOnOutOfMemoryError à votre commande java pour produire un vidage de tas lorsque l'erreur se produit. – developmentalinsanity