Speicher Leak durch Tabellenaktualisierung

Selmau

Mitglied
Hallo Zusammen

Ich bin relativ unerfahren in Java und habe eine erste Anwendung Programmiert, bei der ich Daten in eine Datenbank schreibe und anschliessen auslese und in einer JTable publiziere. Die Aktualisierung der JTable soll in Echtzeit erfolgen. Bei meinem Code habe ich dazu ein Timer verwendet, der mir so immer die Tabelle aktualisiert. Das Problem ist nur, dass mir so immer der Arbeitsspeicher füllt, das heisst ich habe ein Speicher Leak.

Habt ihr eine Idee, wie ich dies verhindern kann?

Hier der Code:

Code:
Timer timer_1 = new Timer(0, new ActionListener() {
            
               @Override
               public void actionPerformed(ActionEvent ae) {
                   try {
                     
                        JScrollPane scrollPane_1 = new JScrollPane();
                        scrollPane_1.setBounds(38, 320, 350, 350);
//                        scrollPane_1.setFont(new Font("Tahoma", Font.PLAIN, 15));
                        add(scrollPane_1);                  
                        table_1 = new JTable();
                       
                       String query = "SELECT `Produkt`, `Anzahl`FROM `Bestellungen_Essen_SNF`, Produkte_SNF WHERE `Produkt_E` = product_id AND `Bestellnummer`='"+Home.min_best_essen_1+"' ";
                        PreparedStatement pst=(PreparedStatement) conn.prepareStatement(query);
                        ResultSet rs=pst.executeQuery();
                        table_1.setModel(DbUtils.resultSetToTableModel(rs));
                        table_1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                        table_1.setFont(new Font("Tahoma", Font.PLAIN, 20));
                        table_1.setRowHeight(40);
                        table_1.getColumnModel().getColumn(0).setMinWidth(300);
                        table_1.getColumnModel().getColumn(1).setMaxWidth(49);
                        scrollPane_1.setViewportView(table_1);
                        textField_tisch_1.setText(String.valueOf(Home.min_best_essen_tisch_1));
                        textField_nr_1.setText(String.valueOf(Home.min_best_essen_1));
                        textField_kommentar_1.setText(String.valueOf(show_kommentar(Home.min_best_essen_1)));
                   
                       
                       
                       
                    }catch (Exception ey) {
                        ey.printStackTrace();
                    }
               }
            });

Besten Dank im Voraus

Gruss Selmau
 

mrBrown

Super-Moderator
Mitarbeiter
Du schließt z.B. deine Statements und ResultSets nicht.

Die Frage ist allerdings, ob du ein wirkliches Speicherleck (bis auf das fehlende Schließen) hast, oder der GC nur noch nicht aufgeräumt hat
 

Joose

Top Contributor
Du erstellst außerdem jedes mal einen neues JScropllPane und einen neuen JTable und fügst diesem dem Fenster hinzu.
Entfernst du die alten überhaupt? Auch wenn die alten JTable Elemente nicht sichtbar sind bzw. gezeichnet werden sind sie logisch vorhanden und belegen natürlich Speicher!

Warum tauscht du nicht einfach nur den Content des JTables aus?
 

Selmau

Mitglied
Hallo Zusammen

Habe nun noch einen relativ kleinen Speicherverlust, dass heisst in rund 3 Stunden ist der Speicher meines Programms von 200Mb auf 550Mb angestiegen. Ich kenne leider die Probleme für Speicherverluste nicht ganz. Alle geöffneten Statements und Resultsets im Timer schliesse ich nun. Wo kann Speicher noch verloren gehen und wie kann ich diese Temporären Daten löschen? Muss ich jedes Objekt nach gebrauch mit der Anwendung .close(); wieder schliessen?
 

mrBrown

Super-Moderator
Mitarbeiter
Steigender Speicherverbrauch ist in Java nicht zwingend ein Zeichen für ein Speicherleck, sondern u.U. einfach der Funktionsweise der JVM geschuldet.

Habe nun noch einen relativ kleinen Speicherverlust, dass heisst in rund 3 Stunden ist der Speicher meines Programms von 200Mb auf 550Mb angestiegen. Ich kenne leider die Probleme für Speicherverluste nicht ganz.
Benutz nen Profiler ;)

Muss ich jedes Objekt nach gebrauch mit der Anwendung .close(); wieder schliessen?
Nein, nur jedes Closeable (und da besser einfach try-with-resources nehmen)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Countdown verursacht Speicher Leak AWT, Swing, JavaFX & SWT 7
Lukas2904 Wie speicher ich eine Einstellung? AWT, Swing, JavaFX & SWT 1
A Button mit Speicher-Funktion AWT, Swing, JavaFX & SWT 8
A AWT Beim (mehrmaligen) Screenshot machen läuft der Speicher voll AWT, Swing, JavaFX & SWT 2
C Swing Speicher-Hinweis bei Formularänderungen AWT, Swing, JavaFX & SWT 12
S Swing Fenster schliessen, javaw noch im Speicher AWT, Swing, JavaFX & SWT 5
G datensätze aus der db in einer arraylist speicher und in gui AWT, Swing, JavaFX & SWT 4
P Warum braucht mein kleines Programm 20 MB Speicher? AWT, Swing, JavaFX & SWT 13
K JListen Inhalt speicher AWT, Swing, JavaFX & SWT 2
W JFileChooser speicher von Datein mit und ohne ende AWT, Swing, JavaFX & SWT 2
eskimo328 Java6 Methode in Java5 verwenden (memory leak JInternalFrame) AWT, Swing, JavaFX & SWT 4
2 Memory Leak mit BufferedImage !! AWT, Swing, JavaFX & SWT 15
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
N JavaFX Vor beenden der Anwendung durch klicken von X Dialog zeigen AWT, Swing, JavaFX & SWT 1
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
pkm MainFrame durch Actionlistener auffrischen, aber wie? AWT, Swing, JavaFX & SWT 2
J Java Datei durch CMD mit Parameter ausführen AWT, Swing, JavaFX & SWT 1
A Panelwechsel durch RadioButtons AWT, Swing, JavaFX & SWT 1
J Falsches Rendern durch JCheckBox in eigenem JTree AWT, Swing, JavaFX & SWT 6
W Zweites/neues Fenster durch Button öffnen AWT, Swing, JavaFX & SWT 6
Monokuma 2D-Grafik Imageimport durch eine gezeichnete Form ersetzen AWT, Swing, JavaFX & SWT 16
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
L JavaFX JavaFX stürtzt durch einen Server#connect Exception AWT, Swing, JavaFX & SWT 3
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
S JavaFX Tab durch Enter ersetzten AWT, Swing, JavaFX & SWT 3
M Swing Durch Usereingabe neues Objekt AWT, Swing, JavaFX & SWT 2
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
U Swing Inhalt vom Fenster wird erst durch Hovern oder Klicken sichtbar AWT, Swing, JavaFX & SWT 3
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
N Swing Abfrage durch JTextField nach Button betätigung AWT, Swing, JavaFX & SWT 3
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
C Durch klicken von Button neues Fenster oeffnen AWT, Swing, JavaFX & SWT 18
T Durch klicken eines Buttons Klasse wechseln AWT, Swing, JavaFX & SWT 2
B EventHandler für durch Tastenkombination erzeugte Zeichen AWT, Swing, JavaFX & SWT 3
D Swing keine JLabel-Aktualisierung bei "externem" Aufruf durch Helferklasse AWT, Swing, JavaFX & SWT 10
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
J JTable bounds ändern durch resizing des Fensters AWT, Swing, JavaFX & SWT 9
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
G Swing Durch GlassPane auf Button klicken und ActionEvent auslösen AWT, Swing, JavaFX & SWT 0
K Swing Durch Methode erzeugte Buttons ansteuern AWT, Swing, JavaFX & SWT 5
K JTable komplett durch andere ersetzen AWT, Swing, JavaFX & SWT 4
P Programm durch Dateiaufruf starten und Datei öffnen AWT, Swing, JavaFX & SWT 2
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
Z JavaFX Inhalt einer ViewTable durch Aktion einer Menubar ändern welche in einer anderen fxml ist AWT, Swing, JavaFX & SWT 4
R AWT AWT Textfeld durch Klick auf Button erstellen? AWT, Swing, JavaFX & SWT 3
F 2D-Grafik Objekt durch Einwirkung einer Kraft im Raum bewegen AWT, Swing, JavaFX & SWT 14
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
P JFrame manuell Grösse verändern durch 'mouseDragged' AWT, Swing, JavaFX & SWT 3
Messoras JWindow/Frame durch das man durchklicken kann AWT, Swing, JavaFX & SWT 5
P Rendern von Geraden im 3 dimensionalen Raum durch Rotationen AWT, Swing, JavaFX & SWT 0
S Swing Navigation durch JPanels AWT, Swing, JavaFX & SWT 0
D Swing Durch JFRAME hindurch klicken AWT, Swing, JavaFX & SWT 2
C Swing Durch Inhaltsänderung eines JTextfields eine Funktion aufrufen AWT, Swing, JavaFX & SWT 5
achillesat SWT Browser öffnen durch Button click AWT, Swing, JavaFX & SWT 5
R JButton durch Enter auslösen AWT, Swing, JavaFX & SWT 7
S Canvas durch transparentes JPanel sichtbar machen AWT, Swing, JavaFX & SWT 2
K Zugriff auf Label und Ereignisbehandlung durch zwei Handlerklassen AWT, Swing, JavaFX & SWT 3
S Objekt durch Tasteneingabe mehrmals drehen AWT, Swing, JavaFX & SWT 9
A Minimalestopuhr: JLabel.setText() durch eigenes Event ändern AWT, Swing, JavaFX & SWT 6
A Swing JTextField durch einen JButton leeren AWT, Swing, JavaFX & SWT 15
A Swing Anpassen der Spaltenbreite durch die länge eines Strings AWT, Swing, JavaFX & SWT 3
P JPanel- Listener durch JTextArea aktivieren AWT, Swing, JavaFX & SWT 8
P Durch Bilder Scrollen AWT, Swing, JavaFX & SWT 2
J Swing JButton durch Eingabe von Zahlen in JTextFields aktivieren AWT, Swing, JavaFX & SWT 3
A JComboBox-Inhalt durch neues Array ersetzen AWT, Swing, JavaFX & SWT 2
L Border verschwindet durch Graphics.drawImage() AWT, Swing, JavaFX & SWT 4
S Swing Scrollpanes: wie kann ich durch Java-Code an den "Anfang" scrollen AWT, Swing, JavaFX & SWT 8
M Swing JMenu verdeckt durch Komponente (aber kein AWT und Swing mix!?) AWT, Swing, JavaFX & SWT 3
C Swing Fensterresize durch doppelklick - wie die neue Grösse erhalten? AWT, Swing, JavaFX & SWT 3
V Applet JApplet Flackern durch Repaint AWT, Swing, JavaFX & SWT 11
S SWT Shell durch Event in der Größe verändern AWT, Swing, JavaFX & SWT 7
F Drag & Drop durch Verbindungslinien AWT, Swing, JavaFX & SWT 10
F Wert durch ActionListener an Klasse übergeben AWT, Swing, JavaFX & SWT 3
L SWT Text SelectionText ersetzen durch anderen String AWT, Swing, JavaFX & SWT 6
O keine ähnliche Farben durch Random in Java AWT, Swing, JavaFX & SWT 21
L ListSelectionListener durch Code auslösen AWT, Swing, JavaFX & SWT 3
M Ein Tab eine JTabbedPane durch Button Druck öffen AWT, Swing, JavaFX & SWT 2
Shanks Hintergrundfarbe durch Button click ändern ?? AWT, Swing, JavaFX & SWT 6
R Durch Listener lässt sich Programm nicht mehr ausführen AWT, Swing, JavaFX & SWT 4
G Zeile in JTable durch rechte Maustaste manipulieren AWT, Swing, JavaFX & SWT 4
E Swing CellEditor mit Combobox durch Tastatureingabe editieren?! AWT, Swing, JavaFX & SWT 3
G Menü verschwindet durch .setText() AWT, Swing, JavaFX & SWT 4
A JScrollBar durch Button ersetzten AWT, Swing, JavaFX & SWT 2
xehpuk Swing Komponenten werden durch setFont() winzig AWT, Swing, JavaFX & SWT 3
T neues Fenster durch Button öffnen funktioniert nicht!! AWT, Swing, JavaFX & SWT 2
A Swing Komponente für Swing und JSF durch MVC AWT, Swing, JavaFX & SWT 5
J AWT Artefakte bei AWT-Rendering durch parallelen Thread AWT, Swing, JavaFX & SWT 4
B bin am verzweifeln, will auf knopfdruck durch ne überprüfung die labels unsichtbar machen AWT, Swing, JavaFX & SWT 2
V JTable - SelectionMode wird durch RowFilter verändert AWT, Swing, JavaFX & SWT 2
B Anzeigefehler in GridBagLayout durch paintComponent(Graphics g) AWT, Swing, JavaFX & SWT 3
B Pfade durch Farbräume definieren AWT, Swing, JavaFX & SWT 20
Semox Swing Kreis löschen durch Mausklick in der Nähe AWT, Swing, JavaFX & SWT 2
E Swing JPanels durch ziehen am Rand vergrößern/verkleinern?! AWT, Swing, JavaFX & SWT 2
Z JPanel wird erst durch aufziehen des Fensters sichtbar AWT, Swing, JavaFX & SWT 3
S Programmablauf durch "wait for Button" unterbrechen AWT, Swing, JavaFX & SWT 5
P jframe eingabe durch button AWT, Swing, JavaFX & SWT 2
E Login wird durch NullPointerException abgebrochen AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben