Ich hatte einen Anruf eines Kunden am letzten Wochenende erzählte mir, dass ihr Java-Programm nicht reagierte, wenn Sie einen Import von Daten. Die Daten sind eine einfache Excel-Arbeitsmappe mit 4 Arbeitsblättern. Alle Daten werden aus den Spalten gelesen und einer Datenbank hinzugefügt.Battling Java-Heap-Größe, großer Unterschied zwischen Java lokal und Java Web Start
Also begann ich zu untersuchen und hatte einige seltsame Ergebnisse.
- Testen des Imports mit Run in Netbeans. Dies nutzt Java 64-Bit-Instanz:
Erster Lauf
zweiten Lauf
- Testen der Import mit Java Web Start. Dies wird durch das Öffnen einer JNLP-Datei gestartet wird, und verwendet eine Java-32-Bit-Instanz:
Erster Lauf
In diesem Fall hatte ich das gleiche Problem, das der Kunde war Berichterstattung, das Programm reagiert nicht mehr, nachdem es den Importprozess durchlaufen hat. Dies liegt daran, dass ich die maximale Heap-Größe erreiche, soweit ich das beurteilen kann (roter Kreis).
zweiter Lauf
Also habe ich beschlossen habe, indem es die folgend meine JNLP-Datei die anfängliche Heap-Größe und max Heap-Größe zu erhöhen: initial-heap-size="512m" max-heap-size="1024m"
. Als ich den Import erneut getestet, es schien zu arbeiten, aber ich merke es früher viel mehr Speicher in den ersten 2 Fälle verglichen wird:
- Warum gibt es einen 300mb Unterschied in der Speichernutzung zwischen Fall 1 und 2 im Vergleich zu Fall 4?
- Ist diese hohe Speichernutzung das Ergebnis schlechter Programmierung oder eines Speicherlecks? Oder ist es normal so hohe Werte zu haben?
- Fügt
initial-heap-size="512m" max-heap-size="1024m"
eine gültige Lösung für dieses Problem hinzu?
@StackFlowed Ich bezweifle das sehr. – Kayaman