IE7 has a dead beat garbage collector. The memory will not be reclaimed
when you destroy components. When you create an object, IE allocates
memory on the local machine to run it - destroying the object will not
reclaim that lost memory. No matter what you do, IE will not reclaim the
memory unless the browser is fully refreshed.

IE8 fixed some of these issues, but not all of them.

I ran into this same issue with an enterprise web application and we
almost scrapped GWT-EXT because of it, but we managed to work around it.
The memory problem is a very big one with GWT-Ext. But you are not out
of luck, because you can still work with it if you are creative with
your interfaces and very conservative about of objects/elements you use.

The most important thing to remember is NEVER destroy anything - only
HIDE things and re-use them. And be especially careful with windows and
tab panels. 

Another way I have seen it rectified is more architecture based. If you
base your entire application in frames you can refresh pieces of the
frameset and it will reclaim the memory used by the widget in that
frame. That is very complicated though.

.hide() and .show() are your friends...

Adam

-----Original Message-----
From: [email protected] [mailto:[email protected]] On
Behalf Of kk
Sent: Thursday, April 16, 2009 2:21 AM
To: GWT-Ext Developer Forum
Subject: TabPanel Memory Issue


Hi,

I have a gwt-ext tab panel that dynamically creates tabs. These tabs
can contain multiple gwt-ext widgets. When I try to close these tabs,
I notice that the memory indicated via the task manager of Internet
explorer does not decrease.
My question is: Should/Would IE7 free up the memory when we close
these tabs?

I have tried to manually destroy the tabs by overriding the
doBeforeRemove() method and calling the panel.destroy() method there,
but it does not free up memory.

We are overridding the following method in the PanelListenerAdapter of
the TabPanel
@Override
public boolean doBeforeRemove(Container self, Component component) {
    Panel pp = appTabPanel.getItem(component.getId());
    if(pp != null){
        // Attempting to destroy/remove the tab
        pp.destroy();
        pp.removeAll(true);
        pp.removeFromParent();
        pp = null;
    }
    return true;
}

Any help would be appreciated.



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"GWT-Ext Developer Forum" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/gwt-ext?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to