2009-07-22 9 views
3

Ich habe ein Applet, das nicht genügend Arbeitsspeicher hat. Eine Heap-Dump-Analyse zeigt, dass der Schuldige ein char [] ist, das dem traceMsgQueueThread gehört, das den gesamten Inhalt der Java-Konsolenausgabe enthält. Dies wird mit der Zeit größer, wenn Protokollmeldungen an die Konsole gesendet werden, bis das Applet nicht mehr genügend Arbeitsspeicher hat.Konsolenausgabe in char [] gespeichert verursacht OutOfMemoryError

Dies scheint nur für eine Handvoll Clients auftreten, und wurde auf verschiedenen JREs von Pre 1.5 bis 1.6.0_10 gesehen. Alle unsere Clients laufen mit den gleichen Parametern, d. H. -Xmx256m und -XX: + HeapDumpOnOutOfMemoryError, aber nur wenige zeigen dieses Problem.

Das Ausschalten der Konsole schien in einer Instanz zu funktionieren, aber es war nicht wiederholbar und leider keine Option, da wir die Protokollierung benötigen.

Hat jemand das schon mal gesehen oder weiß was zu tun?

Antwort

0

Da muss ich eine Option, um diese Ablaufverfolgung zu deaktivieren. Probieren Sie die Konfiguration der virtuellen Maschine oder einen Parameter aus, der im Java-Aufruf übergeben wurde.

1

Unter Windows können Sie die Konsole deaktivieren, indem Sie auf Systemsteuerung-> Java-> Erweitert-> Java-Konsole gehen. Dies müsste natürlich auf einer Maschine-für-Maschine-Basis getan werden, und es kann vielleicht nicht einmal helfen, aber ich vermute, dass das Angeben, dass die Konsole nicht gestartet wird, das Erstellen dieses Threads stoppt.

+0

Das schien in einem Fall zu funktionieren, aber laut dem Client war es nicht wiederholbar und ist leider keine Option, da wir die Protokollierung benötigen. –