it-swarm.com.de

Heap-Speicherplatz

Ich habe ein Heap-Space-Problem. Mein Programm ist einfach. Es gibt zwei Akteure (Senden und Empfangen). Der "Senden" -Schauspieler gibt pro Sekunde 10000 Objekte an "Empfangen" weiter und empfängt diese Objekte. Das empfangene Objekt des Empfängers wird im Container gespeichert, der Container wird jedoch jede Sekunde geleert. Es besteht also keine Chance, dass der Container nicht mehr ausreicht. Nun, nach 420000 Objekten, hat mein Eclipse-Schuh die Fehlermeldung " Ioconsole Updater hat Problem" . Und wenn ich ins Detail gehe, sehe ich den Fehler Interner Fehler :: Java-Heap-Speicherplatz

Ich habe versucht, die Heapgröße zu vergrößern. Meine Heap-Größe beträgt 8096 m und die maximale Größe 4096

Ich überwache meinen Code mit visualVm und merke, dass er die Heap-Größe überhaupt nicht überschreitet. Total leer, um das Problem zu beheben.

Kann mir jemand sagen, welche anderen möglichen Szenarien zu solchen Fehlern führen können.

19
Rags

IOConsole ist eine Eclipse-Klasse, nicht die Ihres Programms. Drucken Sie viel auf System.out? Suchen Sie unter Fenster> Voreinstellungen nach "Konsole". Legen Sie eine Art Limit für alle Konsolenpuffer fest. Versuchen Sie, weniger Ausgaben aus dem Programm zu drucken. Vielleicht loggen Sie sich stattdessen in eine Datei ein.

41
John Watts

Sie können die folgenden JVM-Argumente hinzufügen, um einen Überblick über die Speicherbelegung und die Aktivitäten des GC zu erhalten:

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

Dieses Problem ist aufgrund der Puffergröße in der Konsole aufgetreten.

Lösung:

Klicken Sie mit der rechten Maustaste auf Console -> Preferences

beschränke die Konsole.

4
abinov

Ich bin auf das Problem gestoßen und habe versucht, es durch Ändern der Heap- und Puffereinstellungen in Eclipse zu lösen. Ich konnte es jedoch nicht lösen. Dann fiel mir auf, dass in meinem Programm ein Speicherverlust aufgetreten ist, und die Anzahl der Threads nimmt mit der Zeit zu. Das Problem wurde behoben, nachdem ich den Fehler behoben hatte. Ich denke, dass ein Speicherleck nicht der wahrscheinlichste Grund dafür ist, aber es sollte in Betracht gezogen werden.

0
Erkan Erol