SWT Browser zerstören und wieder aufbauen

pcAlko

Grünschnabel
Hallo Community!

Habe mir einen Java Client mit SWT Components geschrieben der auch die Möglichkeit bietet mit einem Browser ins Internet zu gehen.
Dieser Client läuft auf einer ziemlich schwachen Plattform und das Non-Stop Tag für Tag.

So weit so gut ...
Jedoch um so mehr webseiten ich aufrufe, um so mehr RAM wird verbraten und nicht mehr abgebaut.

Ich hab jetzt versucht dass wenn ich im Client auf eine andere Seite ohne Browser gehe (StackLayout) das ich die URL im browser auf about:blank setze.
Hat aber nichts geholfen. Der Browser behält seinen RAM.

Jetzt wollte ich beim verlassen der Seite den Browser mit dispose() zerstören
und wenn ich wieder zurück gehe auf die Seite einen neuen Browser erzeugen.
Jedoch beim zurück gehen wird der Browser nur mehr ganz klein genneriert.

PHP:
private Composite m_oComp;
private Browser m_oBrowser;

public void createSide(Composite composite)
{
    m_oComp=  new Composite(composite, SWT.NONE);
    m_oComp.setLayout(new FillLayout());
    m_oBrowser= new Browser(m_oComp, SWT.NONE);
    m_oBrowser.setUrl("http://www.google.com");
}
das Composite welches herein kommt hat die Grösse 900x600
und der Browser wird mir korrekt angezeigt.

PHP:
public void destroyBrowser()
{
    m_oBrowser.dispose();
    m_oBrowser= null;
}

PHP:
public void newBrowser()
{
    m_oBrowser= new Browser(m_oComp, SWT.NONE);
    m_oBrowser.setUrl("http://www.google.com");
    m_oComp.pack();
}
jetzt ist der Browser aber nur mehr so 50x50
obwohl die Seite noch 900x600 hat

mach ich da irgendetwas falsch?

schon mal Danke für eure Hilfe!
;-)pcAlko
 
Zuletzt bearbeitet:
Hi
Nutze doch bitte Java-Codetags (wie in meiner Signatur zu sehen ist).
Das Zerstören des Browsers dürfte nicht sinnvoll sein. Stattdessen solltest du darauf achten, dass du eine aktuelle Version von SWT mit aktuellem Browser (z.B. XulRunner 10.0) nutzt. In älteren Versionen von XulRunner (bis ca. Version 7) war ein massives Memory Leak enthalten. Um Speicher frei zu machen solltest du besser System.gc() aufrufen, wenn möglich.
 
Hi genodeftest.

Danke für Deine schnelle Antwort.

Das mit dem XulRunner ist ein Problem!
auf meinem Ubuntu ist die Version 1.9.2.24
auf dem alix-board, welches ich zuvor mit kleiner Plattform beschrieben habe, läuft ein Debian-Squeeze und dort ist gar kein xulranner
hab dort den epiphany-browser installiert
weil ich dachte SWT nimmt eh den Browser welcher installiert ist.
komischer weise rennt dort aber der SWT-Browser ordnungs gemäß
Im Repository wäre aber auch nur die Version 1.9.1

hab's mal mit
Java:
System.gc();
probiert. Ein bisschen besser ist es, aber auch nicht die Welt!
Aber danke für Deinen Tip
muss ich wohl damit leben
oder diesen mal selbst compilieren :confused:

Nutze doch bitte Java-Codetags
wusste ich nicht ;-)
im Applet gibt's eben nur diesen für PHP
bin ja auch ein Grünschnabel
wie ja bei jedem meiner post's vermerkt ist ;)
(ok, nein, jetzt mit 5 Beiträgen bin ich ja schon ein Rookie)

DANKE,
;-)pcAlko
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück