2016-11-30 7 views
2

Mein Java-Programm leckt Speicher beim Betrieb unter Linux ausschließlich.JavaFX unerklärliche Lecks Speicher auf Linux

Symptome:

  • VisualVM zeigt etwa 300Mb Spitzen-Heap-Größe und keine verdächtigen Aktivitäten.
  • Unter Mac OS X das Programm läuft auf unbestimmte Zeit mit 900 MB Speicher (über Activity Monitor)
  • Unter Linux der Speicherbedarf auf 4,5 GB erhöht sich schnell, wenn OS läuft aus Speicher (über Activity Monitor)

Das Programm verwendet JavaFX. Dieses Verhalten begann nach einem Commit, bei dem GUI und Berechnungen in verschiedene Threads aufgeteilt wurden.

Das kann in der JVM kein Leck sein, oder?

Gibt es Werkzeuge, um solche Probleme zu untersuchen?

+1

Siehe auch/mögliches Duplikat von: http://stackoverflow.com/questions/40228866/optimizing-memory-leakage-in-javafx/40239829#40239829 – Itai

Antwort

3

Verschiedene Speicherleckfehler wurden für JavaFX gemeldet. Sie beziehen sich auf die Verwendung von hardwarebeschleunigten Grafiken. Der „Kopf“ Problem ist dies:

Die Kommentare zu der oben deuten darauf hin, dass die Fehler in der OpenGL-Implementierung sein können, aber sie werden ausgelöst durch etwas JavaFX tut. Ihre Bemerkung zu Ihrem Commit scheint überzeugend zu sein, und es könnte sich lohnen, dies Oracle zu melden.

Auf der anderen Seite deutet die Tatsache, dass die gemeldeten Fehler Grafikbeschleunigung zugeordnet sind darauf hin, dass Sie Ihr Problem umgehen können, indem Sie Java sagen, Grafikbeschleunigung nicht zu verwenden.

Gibt es irgendwelche Werkzeuge, um solche Probleme zu untersuchen?

Keine, die ich kenne. Wenn das Problem dort ist, wo die Leute es für richtig halten, dann ist es am besten, es zu umgehen.

+2

Es ist ein Fehler in Mesa und/oder X.org. Gute Nachrichten sind - es scheint in Mesa 13.0.1 + X.org 1.18.4 behoben zu sein – Itai