Hallo in die Runde,
ich bin neu im Forum. Ich bin 44 Jahre und beschäftige mich Hobbymässig mit der Programmierung. Jetzt bin ich bei Java gelandet und hab ein Problem mit einem MemLeak. Wie gesagt, ich arbeite seit ca. 2 Wochen mit Java. Ich habe mich für Ecplise in der Version: 2022-12 (4.26.0) entschieden. Das macht es mir einfacher via WindowBuilder schnell Ergebnisse zu erzielen.
Ich hab mir ein kleines Hilfstool gebaut und nachdem es lief hab ich festgestellt, dass der Arbeitsspeicher kontinuierlich größer wird. Ich habe das ganze Programm rauf und runter durchgewühlt und nichts gefunden. Also hab ich eine einfache Testumgebung angelegt.
Neues Java Projekt --> package View --> Klasse TestView Application Window via WindowBuilder eingebunden und das leere Window gestartet.
Nach dem Start kann man im Arbeitsspeicher das gleiche verhalten beobachten. Das Programm verbraucht kontinuierlich mehr Arbeitsspeicher. Nach zwei Std ist das Programm von ca.40Mb auf 100Mb gestiegen und das bei einem leeren Window.
Mit dem Programm JProfiler in der 9Tage Testversion konnte ich das Problem weiter eingrenzen und den Verursacher ermitteln. Siehe Anhang.
By the Way - gibt es andere LiveTime Analyse Tools? Oder weiss jemand was der JProfiler kosten soll. Hab dazu nichts im Netz gefunden.
Das java.Lang.Objekt wurde als Hauptverursacher ausgemacht. Dieser erzeugt unmengen an Instanzen. Ich kann mir nur nicht erklären warum. Das JProfiler Programm ist mir auch nicht so vertraut um hier weiter in die tiefe zu kommen. Und wenn, es scheint ein Bug seines Java zu sein, oder wie seht Ihr das?
Für alle die Lust haben, ich hab im Anhang mal alle notwendigen File angefügt. Vielleicht habt ihr ein Idee.
Hinweis. Das MemLeak sofern es sich um eins handelt tritt sowohl unter Window als auch unter Mac auf. Auch hab ich verschiede Java Versionen probiert. Zum eine mit Java SE-1.8. und auch mit JavaSE-19. Immer das gleiche Ergebnis.
Vielen Dank im Voraus vielleicht kann mich jemand erleuchten.
LG David.
ich bin neu im Forum. Ich bin 44 Jahre und beschäftige mich Hobbymässig mit der Programmierung. Jetzt bin ich bei Java gelandet und hab ein Problem mit einem MemLeak. Wie gesagt, ich arbeite seit ca. 2 Wochen mit Java. Ich habe mich für Ecplise in der Version: 2022-12 (4.26.0) entschieden. Das macht es mir einfacher via WindowBuilder schnell Ergebnisse zu erzielen.
Ich hab mir ein kleines Hilfstool gebaut und nachdem es lief hab ich festgestellt, dass der Arbeitsspeicher kontinuierlich größer wird. Ich habe das ganze Programm rauf und runter durchgewühlt und nichts gefunden. Also hab ich eine einfache Testumgebung angelegt.
Neues Java Projekt --> package View --> Klasse TestView Application Window via WindowBuilder eingebunden und das leere Window gestartet.
Java:
//komplett von Eclipse erzeugter Code!
package View;
import java.awt.EventQueue;
import javax.swing.JFrame;
public class startView {
private JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
startView window = new startView();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public startView() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Nach dem Start kann man im Arbeitsspeicher das gleiche verhalten beobachten. Das Programm verbraucht kontinuierlich mehr Arbeitsspeicher. Nach zwei Std ist das Programm von ca.40Mb auf 100Mb gestiegen und das bei einem leeren Window.
Mit dem Programm JProfiler in der 9Tage Testversion konnte ich das Problem weiter eingrenzen und den Verursacher ermitteln. Siehe Anhang.
By the Way - gibt es andere LiveTime Analyse Tools? Oder weiss jemand was der JProfiler kosten soll. Hab dazu nichts im Netz gefunden.
Das java.Lang.Objekt wurde als Hauptverursacher ausgemacht. Dieser erzeugt unmengen an Instanzen. Ich kann mir nur nicht erklären warum. Das JProfiler Programm ist mir auch nicht so vertraut um hier weiter in die tiefe zu kommen. Und wenn, es scheint ein Bug seines Java zu sein, oder wie seht Ihr das?
Für alle die Lust haben, ich hab im Anhang mal alle notwendigen File angefügt. Vielleicht habt ihr ein Idee.
Hinweis. Das MemLeak sofern es sich um eins handelt tritt sowohl unter Window als auch unter Mac auf. Auch hab ich verschiede Java Versionen probiert. Zum eine mit Java SE-1.8. und auch mit JavaSE-19. Immer das gleiche Ergebnis.
Vielen Dank im Voraus vielleicht kann mich jemand erleuchten.
LG David.
Anhänge
-
Bildschirmfoto 2022-12-10 um 12.38.05.png743,4 KB · Aufrufe: 2
-
Bildschirmfoto 2022-12-10 um 12.40.30.png212,6 KB · Aufrufe: 6
-
Bildschirmfoto 2022-12-10 um 12.56.11.png440,2 KB · Aufrufe: 2
-
Bildschirmfoto 2022-12-10 um 13.05.42.png313 KB · Aufrufe: 1
-
memLeakTestView.hprof.zip1,9 MB · Aufrufe: 0
-
memLeakTest.zip10 KB · Aufrufe: 0
Zuletzt bearbeitet: