VisualVM Was erkennt ihr hier?

vimar

Bekanntes Mitglied
visualvm1.jpg



inwiefern sollte ich mich jetzt im programm bemühen? ich denke diese ganzen Stringinstanzen entstehen durch meine ganzen parserinstanzen die ich in meinem programm habe?`

sagt bitte einfach was ihr so denkt wenn ihr den screenshot seht. hab teilweise auslastung von 6 GB RAM für mein programm.

danke und mfg vimar
 

vimar

Bekanntes Mitglied
Es müsste irgendwo hier liegen, zeile 17 oder zeile 22 auslöser für sowas? ansich nicht oder?

ist es vllt der strtokenizer der mit nextToken() permanent neue string objekte erzeugt?

Java:
public csiftparser(String filename) throws InterruptedException{
            
            this.filename = filename;
            
           // KeyPointList = new ArrayList<Object>();
            AAO_kPointList = new ArrayList <ArrayList <Integer>>();
            
            
            try
            {
               in = new LineNumberReader (fr = new FileReader(filename));
     
                vcount = 0;
               
                //in.readLine();
    
                for (String line; (line = in.readLine()) != null;){
                    
                     // System.out.println(line);
                    //line = 300.91 351.43 28.79 2.884
                    
                    strToK_getCoordinates = new StringTokenizer(line);
                    akt_X = Double.parseDouble(strToK_getCoordinates.nextToken());
                    akt_Y = Double.parseDouble(strToK_getCoordinates.nextToken());
                    akt_Scale = Double.parseDouble(strToK_getCoordinates.nextToken());
                    akt_Orientation = Double.parseDouble(strToK_getCoordinates.nextToken());
                    
                    //System.out.println(akt_X);
                    // skip to next;
                   // line = in.readLine();
                  
                        for (int m =0; m < 3; m++){
                            kPoint = new siftKeyPoint();
                            kPoint.setX(akt_X);
                            kPoint.setY(akt_Y);
                            kPoint.setScale(akt_Scale);
                            kPoint.setOrientation(akt_Orientation);
                            
                            vcount = 0;
                            while (vcount < 7){
                                line = in.readLine();
                                vcount++;
                                strToK_getKeypoints = new StringTokenizer(line);
                                while(strToK_getKeypoints.hasMoreTokens()){
                                    temp = strToK_getKeypoints.nextToken();
                                    kPoint.getList().add(Integer.valueOf(temp));
                                    
                                }
                                
                                
                            }
                            AAO_kPointList.add(kPoint.getList());
                            
  
                        }
                    
 
                    
                       
               
                    
                    
                }
           
          
                
            }
        catch (IOException ex) {
            Logger.getLogger(csiftparser.class.getName()).log(Level.SEVERE, null, ex);
        }                
         finally {
                if (fr != null)
                    
                    try { 
                        System.out.println("allet weg");
                        fr.close();
                        in.close();
                        strToK_getKeypointquantity = null;
                        strToK_getCoordinates = null;
                        strToK_getKeypoints = null;
                        
                        //System.gc();
                    
                    }  
                    catch (IOException e) {
                        
                    }
            }
 
T

Tomate_Salat

Gast
Konventionsverletzungen:
Packagename ALLUPPERCASE
Klassenname lowerCamelCase

wer auch immer sowas wie SIFT.kmeansPoint sollte sich mal den Link in meiner Signatur anschauen

----

Ah, und da gehts weiter:
Methoden werden lowerCamelCase geschrieben, genauso wie Variablen/Felder
 

vimar

Bekanntes Mitglied
danke :eek:) allerdings hab ichs nicht hinbekommen immer dran zu denken und mach immer massen-refactor am ende eines projekts :>
 

Marco13

Top Contributor
OK, wenn die ganzen Strings aus einer Datei kommen, landen die Tokens im String-Pool - aber das sollte eigentlich nicht stören. Hattest du OutOfMemoryErrors?
 

vimar

Bekanntes Mitglied
ja die hatte ich. damals noch 3GB RAM.

hab nun auf 8 GB aufgestockt und diese vm-optionen:
-Xms5500m -Xmx5500m -XX:MaxPermSize=3048m -XX:+UseThreadPriorities -XX:MaxHeapFreeRatio=70 -XX:MinHeapFreeRatio=40 -XX:ReservedCodeCacheSize=32m -XX:+UseFastAccessorMethods -XX:+UseLargePages -XX:+UseStringCache -XX:+OptimizeStringConcat -XX:+UseCompressedStrings -XX:+UseG1GC -XX:MaxGCPauseMillis=25 -XX:GCPauseIntervalMillis=200


jetzt hab ich ruhe bez. heapsize outofmemory. allerdings MUSS ich noch mehr textfiles parsen als derzeit und werde an die 8GB grenze kommen. daher muss ich dieses String-Aufkommen irgendwie verringern!
 

Blackhole16

Bekanntes Mitglied
[OT]Kannst du nächstes mal pls die Leerzeilen weglassen? Und versuchen keine unnötigen Zeilen zu machen? [JOKE] Denn schon das kostet Speicher [/JOKE] ;) Hier mal verbessert:[/OT]

Java:
public csiftparser(String filename) throws InterruptedException{
            this.filename = filename;
           // KeyPointList = new ArrayList<Object>();
            AAO_kPointList = new ArrayList <ArrayList <Integer>>();

            try {
                in = new LineNumberReader (fr = new FileReader(filename));
                vcount = 0;
               
                //in.readLine();
                for (String line; (line = in.readLine()) != null;){
                    // System.out.println(line);
                    //line = 300.91 351.43 28.79 2.884
                    strToK_getCoordinates = new StringTokenizer(line);
                    akt_X = Double.parseDouble(strToK_getCoordinates.nextToken());
                    akt_Y = Double.parseDouble(strToK_getCoordinates.nextToken());
                    akt_Scale = Double.parseDouble(strToK_getCoordinates.nextToken());
                    akt_Orientation = Double.parseDouble(strToK_getCoordinates.nextToken());
                    
                    //System.out.println(akt_X);
                    // skip to next;
                    // line = in.readLine();
                    for (int m =0; m < 3; m++){
                            kPoint = new siftKeyPoint();
                            kPoint.setX(akt_X);
                            kPoint.setY(akt_Y);
                            kPoint.setScale(akt_Scale);
                            kPoint.setOrientation(akt_Orientation);
                            
                            vcount = 0;
                            while (vcount < 7){
                                line = in.readLine();
                                vcount++;
                                strToK_getKeypoints = new StringTokenizer(line);
                                while(strToK_getKeypoints.hasMoreTokens()){
                                    temp = strToK_getKeypoints.nextToken();
                                    kPoint.getList().add(Integer.valueOf(temp));
                                }
                            }
                            AAO_kPointList.add(kPoint.getList());
                        }
                  }
            }
        catch (IOException ex) {
            Logger.getLogger(csiftparser.class.getName()).log(Level.SEVERE, null, ex);
        }                
         finally {
                if (fr != null)
                    try { 
                        System.out.println("allet weg");
                        fr.close();
                        in.close();
                        strToK_getKeypointquantity = null;
                        strToK_getCoordinates = null;
                        strToK_getKeypoints = null;

                        //System.gc();
                    }  
                    catch (IOException e) {}
            }

:D:lol::);):bae:

mfg
BH16

PS: 28 Zeilen einfach durch Entfernung von Leerzeilen und unnötigen Zeilen gespart :p
 
M

maki

Gast
So aus Neugier, anstatt
Java:
temp = strToK_getKeypoints.nextToken();
das hier:
Java:
final String temp = strToK_getKeypoints.nextToken();
macht das irgendeinen Unterschied?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
K VisualVM Profiling Remote Probleme Allgemeine Java-Themen 1
C VisualVM oder Jconsole über Jolokia-Proxy Allgemeine Java-Themen 0
F Java VisualVM Allgemeine Java-Themen 1
S VisualVM Allgemeine Java-Themen 9
B Scanner erkennt keinen Text in Textdatei, obwohl welcher drinsteht Allgemeine Java-Themen 10
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
T Swing TrayIcon erkennt links klick nicht (Mac) Allgemeine Java-Themen 2
K BufferedReader.readLine erkennt Zeilenende nicht Allgemeine Java-Themen 11
G RegEx erkennt nicht Allgemeine Java-Themen 2
L Tomcat erkennt Share nicht Allgemeine Java-Themen 6
Zrebna SonarLint: Warum kein Null-Referencing-CodeSmell-Hint hier? Allgemeine Java-Themen 23
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
jhCDtGVjcZGcfzug Klassen Was genau passiert hier? Kann mir das jemand bitte Zeile für Zeile erklären? Allgemeine Java-Themen 1
berserkerdq2 Kann keine Labels erstellen, was ist hier syntaktisch falsch Allgemeine Java-Themen 5
N Ist Selenium hier das richtige Werkzeug? Allgemeine Java-Themen 1
Zrebna Wieviele Testfälle muss man hier schreiben? (Software Engineering) Allgemeine Java-Themen 13
A Ist ein enum hier richtig? Enum toString() Methode. Allgemeine Java-Themen 1
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
X Wie mache ich hier eine Rekursion rein ? Allgemeine Java-Themen 7
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
J Einrückungstool mit Farblicher hervorhebung wie hier? Allgemeine Java-Themen 3
E Queue: Wie kann hier ein null-Pointer Exception auftreten?! Allgemeine Java-Themen 11
R Was ist hier falsch? Abfragen Allgemeine Java-Themen 3
X Wer kann mir das hier erklären? Programm frisst RAM! Allgemeine Java-Themen 11
S Singleton hier sinnvol? Allgemeine Java-Themen 20
E Wieso returnt das hier 1? Allgemeine Java-Themen 3
W Wieso funktioniert dieser Code hier? Allgemeine Java-Themen 6
G Warum kommt hier NullPointerException? Allgemeine Java-Themen 3
F Threading oder kein Threading - das ist hier die Frage. Allgemeine Java-Themen 23
D Timer oder Thread, das ist hier die Frage Allgemeine Java-Themen 3
egrath Anonyme Methode - warum hier kein Compilerfehler Allgemeine Java-Themen 2
F Gutes Threads Tutorial hier aber trotzdem eine Frage Allgemeine Java-Themen 7
M Spring oder nicht, das ist hier die Frage Allgemeine Java-Themen 3
S Was ist hier falsch? Allgemeine Java-Themen 16
G wer muss hier wen aufrufen? Allgemeine Java-Themen 7
M Kann man hier noch was rausholen? Allgemeine Java-Themen 16
A Was passiert hier? Allgemeine Java-Themen 13
I Ist JNI hier richtig? Allgemeine Java-Themen 8
B Gibts sogar hier Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben