Höherer Speicherverbrauch in Java 8 als in Java 7
Ich entwickle eine JavaFX-Desktopanwendung mit Java 7. Die von mir entwickelte Anwendung verwendet 10-12 Hintergrundthreads, die Systeminformationen abrufen oder HTTP-Anforderungen stellen. Ich benutze auch etwas JNA- und JNI-Code.
Wenn ich die Größe des Heapspeichers auf 40 MB beschränke, reicht das aus und die Anwendung läuft problemlos mit insgesamt ~ 100 MB Arbeitsspeicher.
Da Oracle im April die Unterstützung für Java 7 eingestellt hat, habe ich mich für ein Upgrade der Anwendung auf Java 8 entschieden. Das Upgrade verlief reibungslos, es waren keine großen Codeänderungen erforderlich, aber ich habe festgestellt, dass der Gesamtspeicherverbrauch auf 130 + -20 MB gestiegen ist. Ich habe über dieses Problem recherchiert und festgestellt, dass mit Java 8 Metaspace eingeführt wurde. Ich glaube, das ist das Problem, aber in Java 7 habe ich PermGenSize nie so eingestellt, dass ich am Ende keine Ahnung habe, warum die Anwendung mehr Speicher verwendet.
Nur damit Sie wissen, dass die Metaspace-Nutzung in VisualVM etwa 33-36 MB beträgt.
Jede Hilfe wäre dankbar, danke
------- Gelöst ---------
Das Problem war; Das von mir verwendete JDK war 64-Bit, da das 64-Bit-JDK unter Windows nur den Servermodus enthält, habe ich ein 32-Bit-JDK 8 installiert und es im Client-Modus verwendet. Seitdem beträgt die RAM-Auslastung ca. 80 MB.