Eclipse - Project - Heap Size

flashray

Erfahrenes Mitglied
Hallo Freunde,

wo stellt man in Eclipse für ein Projekt Parameter wie maximaler Heapspeichern ein?


Vg Erdal
 
Hallo!

Was meinst du mit "Für ein Projekt"?
Für eine Launch-Konfiguration geht das über Run -> Run ... -> Entspreche Launch Konfiguration auswählen -> Arguments -> VM Arguments -> -Xms1024m -Xmx1024m

Ansonsten kann man über die Datei %ECLIPSE_HOME%\eclipse.ini Argumente für die JVM hinterlegen, die von Eclipse verwendet wird (Das gleiche wie der Parameter -vmargs beim Aufruf der Eclipse.exe).

Gruß Tom
 
Hallo Tom,

danke! Das funktioniert. Jetzt wollte ich allerdings noch die JConsole ausprobieren. Dazu habe ich folgendes bei den VM Arguments eingetragen:
-Dcom.sun.management.jmxremote de.qalem.notepad.editor.Editor

Das Problem ist, das eclipse die libraries nicht mehr findet. Die jar-libraries habe ich im Tab Classpath im Run-Dialog eingetragen. Ich finde aber keine stelle für native library bzw. dll Dateien. Hast du hier auch eine Idee.


Vg Erdal
 
Hab die dll ins System32 Ordner gelegt, jetzt funktioniert es.

Mein Problem ist, wenn ich mit meinem Editor nacheinander mehrere Dateien öffne reagiert er irgendwann nicht mehr. Eclipse gibt keine Fehlermeldung, das vielleicht der Speicher voll sei. Auch aus der JConsole aus betrachtet scheint was es den heap angeht alles in Ordnung zu sein. Es ist so als ob auf dem JFrame ein Glasspane sei.

Kennt vielleicht jemand noch einen Wert den ich aus der JConsole überprüfen sollte, welcher für das nichtreagieren der GUI verantwortlich sein könnte?

Vg Erdal
 
Hab das Problem gefunden. Allerdings ist mir unklar warum das so ist. Ich hatte den Text in die JTextArea immer in einem neuen Thread geladen. Die Applikation ist dann aber nach dem 4 oder 5 Laden hängengeblieben. Ich habe jetzt die Threads weggelassen, siehe da, die Applikation bleibt nicht einmal nach dem 20 Laden einer Textdatei hängen.

Ich dachte bisher, man soll belastende Vorgänge in einem eigenen Thread ausführen! Kann mir das jemand erklären, wieso das nicht so ist?


Vg Erdal
 
Hallo!

Lang laufende Aktionen die im EDT ausgeführt die GUI Blockieren würden sollte man in einen separat laufenden Thread auslagern, das ist richtig. Jedoch sollte man für sämtliche Manipulationen einer Swing GUI über den EDT gehen. Also nach dem dein "großes" Dokument von dem anderen Thread geladen wurde solltest du über

Java:
final String text = loadText();
        EventQueue.invokeLater(new Runnable(){
            public void run() {
                Foo.this.textArea.setText(...);
            }
        });
die Manipulation der GUI über den EDT durchführen. Versuschst du die GUI aus einem nicht EDT Thread zu Manipulieren kann sie einfrieren...

Gruß Tom
 
Hallo Tom,

wie meinst du das genau?

Code:
new Thread () {
  public void run () {
    final String text = loadText();    
  }
}
EventQueue.invokeLater(new Runnable(){
  public void run() {
     Foo.this.textArea.setText(...);
  }
});


Code:
new Thread () {
  public void run () {
    final String text = loadText();
    EventQueue.invokeLater(new Runnable(){
      public void run() {
        Foo.this.textArea.setText(...);
      }
   });
  }
}

Vg Erdal
 
Zurück