Garbage Collector rennt die ganze Zeit

Status
Nicht offen für weitere Antworten.
R

Rayden

Gast
Seit dem letzten Umbau in einem Codeteil von mir, läuft bei mir die ganze Zeit der Garbage Collector was das ganze Programm sehr langsam macht. Solche Zeilen bekomme ich im Debug Fenster mehrfach pro Sekunde:

[GC [DefNew: 8128K->0K(9088K), 0.0013326 secs] 18761K->10633K(130112K), 0.0014368 secs]
[GC [DefNew: 8128K->0K(9088K), 0.0014055 secs] 18761K->10633K(130112K), 0.0015142 secs]
[GC [DefNew: 8128K->0K(9088K), 0.0017555 secs] 18761K->10633K(130112K), 0.0018670 secs]
[GC [DefNew: 8128K->0K(9088K), 0.0013329 secs] 18761K->10633K(130112K), 0.0014440 secs]
[GC [DefNew: 8128K->0K(9088K), 0.0013111 secs] 18761K->10633K(130112K), 0.0015977 secs]
[GC [DefNew: 8128K->0K(9088K), 0.0013636 secs] 18761K->10633K(130112K), 0.0015348 secs]
[GC [DefNew: 8128K->0K(9088K), 0.0013259 secs] 18761K->10633K(130112K), 0.0014326 secs]

Irgendeine Idee?
 
R

Rayden

Gast
sry für Doppelpost ...

aber ist wichtig fürs Thema: Ich hatte zuerst den Verdacht, das ich zuviele Objekte instanziere. Deshalb ging ich nochmal den ganzen Code durch und habe versucht nur mit Referenzen zu arbeiten.
 

SnooP

Top Contributor
versuch doch in den Konstruktoren der Objekte entsprechende System.outs einzubauen am besten mit counter, dann weißt du, wann und wie oft die Objekte erzeugt werden...
 

Bleiglanz

Gesperrter Benutzer
1. ist Konsolenausgabe generell langsam

2. der GC läuft immer, das ist normal

3. warum lässt du dir das überhaupt anzeigen?

4. irgendwo ein speicherleck? wie oft verwendest du new? irgendwo vergessene Referenzen?
 
R

Rayden

Gast
Ja, ich weiss die Konsolenausgabe is lahm .. aber wenn ich generell System.out's einbaue spuckt er mir da auch 1000 Zeilen pro Sekunde aus.

Ausgeben lass ichs mir weil ich früher (ein inzwischen behobenes) Problem mit einem Speicherleck hatte.
 
G

Guest

Gast
Irgendwie hab ich eh den Verdacht das das Problem ganz woanders liegt .. in meiner ersten Version vom Kampfscript hat der Garbagecollector nie angefangen die ganze Zeit aufzuräumen. Wenn ich richtig liege, sollte er das ja nur dann machen wenn Objekte nicht mehr benötigt werden.

Ich initialisiere momentan ja am Anfang des Kampfs 6000 Schiffsobjekte (+einer Liste pro Schiff mit jeweils 1-20 modulen) und erstelle danach keine neuen Objekte mehr sonst kopiere nur noch Daten zwischen bereits vorhandenen Schiffsobjekten hin und her. Erst wenn die 6000 unterschritten werden fange ich an die Schiffsklassen zu entfernen. Sollte meiner Meinung nach eigentlich sehr schnell sein.

Irgendwo muss der Hund begraben sein und ich find ihn nicht. Langsam verlier ich glaub den Überblick bei den dutzenden Listen, HashMaps und Klassen die ich für die Berechnung brauche.

Er verwirft oben ja immer wieder 8MB was mir doch etwas viel erscheint. Naja ich hab verbose und printdetails jetzt mal entfernt. Mal schaun wie sich das auswirkt.
 

Wolkenfels

Mitglied
Der GC läuft eigentlich immer - macht aber einen Unterschied zwischen kleinen und großen Runs.
In den kleinen Runs werden im Prinzip die kurzlebigen Objecte aufgeräumt, bei den großen werden auch die langlebigen Objecte durchforstet.
Unter kurzlebige Objecte fallen auch die ganzen lokalen Methoden Variablen.
Wenn ein Programm die ganze Zeit was tut, dann erzeugt es im Normalfall auch eine ganze Menge von Variablen. Irgendwas passiert ja in Deinem Code. Und auch wenn Deine Schiffe nur als Referenzen gehalten werden - du setzt doch in den Schiffsobjekten irgendwelche Variablen. Strings sind zum beispiel nicht änderbar - für jede Stringzuweisung wird ein neues Stringobject erzeugt.

Da aber der Speicher immer wieder auf den gleichen Wert freigegeben wird, solltest Du dir keine Sorgen machen - ein Speicherleck sieht anders aus.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Garbage collector Allgemeine Java-Themen 3
D Garbage Collector Allgemeine Java-Themen 3
A Garbage Collector Allgemeine Java-Themen 3
A Garbage Collector in NetBeans vs. exe Anwendung Allgemeine Java-Themen 33
L Garbage Collector lässt Programm kurz hängen Allgemeine Java-Themen 10
H2SO3- SCJP garbage collector frage Allgemeine Java-Themen 13
R Garbage Collector löscht anscheinend nichts Allgemeine Java-Themen 22
S Garbage Collector entlasten Allgemeine Java-Themen 2
JStickman Der Garbage Collector Allgemeine Java-Themen 13
P Threads ohne Referenz & der Garbage Collector Allgemeine Java-Themen 2
S garbage collector prog Allgemeine Java-Themen 4
S Threads <-> Garbage Collector Allgemeine Java-Themen 2
M Java Garbage Collector Frage (Singleton Pattern) Allgemeine Java-Themen 13
P Garbage Collector funktioniert nicht richtig? Allgemeine Java-Themen 12
M Problem mit garbage collector Allgemeine Java-Themen 19
M Garbage Collector Allgemeine Java-Themen 5
T Garbage Collection Frage Allgemeine Java-Themen 15
B Garbage Collection Logfile: Binary File Allgemeine Java-Themen 2
hdi Garbage Collection Allgemeine Java-Themen 12
T Objekt der Garbage Collection zugaenglich machen? Allgemeine Java-Themen 7
F Frage zu Memory Leak, Garbage Collection und Profiler-Tools Allgemeine Java-Themen 6
M Wie lange dauert ein garbage collection Allgemeine Java-Themen 7
R Garbage Collection bei gegenseitiger Objektreferenz Allgemeine Java-Themen 2
M Garbage manuell loswerden Allgemeine Java-Themen 29
M garbage collection Allgemeine Java-Themen 14
G Frage zur Garbage Collection Allgemeine Java-Themen 5
H Collector Generics Problem (incl. Stream & Lambda) Allgemeine Java-Themen 4
P Grabage Collector Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben