web-dev-qa-db-fra.com

À court d'espace de tas

J'ai un problème d'espace. Mon programme est simple. Il y a deux acteurs (envoyer et recevoir) "envoyer" un acteur passe 10 000 objets par seconde pour "recevoir", et recevoir publie ces objets. l'objet destinataire reçu est en cours de sauvegarde dans le conteneur, mais le conteneur est vidé toutes les secondes. Il n'y a donc aucune chance que le conteneur manque d'espace. Maintenant, après 420000 objets, mon Eclipse affiche une erreur en disant " ioconsole updater a rencontré un problème" . Et quand je vais dans les détails, je vois l'erreur Erreur interne :: espace de tas Java

J'ai essayé d'augmenter la taille du tas. Ma taille de heap est 8096m et maxpermsize est 4096

Je surveille mon code à l'aide de visualVm et je remarque qu'il ne dépasse pas la taille du tas. Totalement vierge quant à la façon de résoudre le problème.

Quelqu'un peut-il me dire quels autres scénarios peuvent mener à de telles erreurs?.

19
Rags

IOConsole est une classe Eclipse, pas celle de votre programme. Imprimez-vous souvent sur System.out? Sous Fenêtre> Préférences, recherchez "console". Définissez une sorte de limite pour tous les tampons de la console. Essayez d’imprimer moins de résultats du programme. Peut-être vous connecter à un fichier à la place.

41
John Watts

Vous pouvez ajouter les arguments JVM suivants pour vous donner une idée de l'utilisation de la mémoire et de ce que fait le GC:

-Xloggc:/tmp/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
5
kevin_c

Ce problème est dû à la taille du tampon dans la console.

Solution :

Clic droit sur la console -> Préférences

limiter la console.

4
abinov

J'ai rencontré le problème et j'ai essayé de le résoudre en modifiant les paramètres de mémoire tampon et de mémoire tampon dans Eclipse. Cependant, je ne pouvais pas le résoudre. Ensuite, j'ai remarqué qu'il y avait une fuite de mémoire dans mon programme et que le nombre de threads augmentait avec le temps. Le problème a été résolu après avoir corrigé le bogue. Je pense que la fuite de mémoire n’est pas la raison la plus probable, mais il faut en tenir compte.

0
Erkan Erol