We use extended GXT elements all over our product that are not getting garbage collected once they are out of use. This is causing a crazy build up of memory that us devs didn't have issues with because we're running juiced machines but a few clients crash almost immediately.

The biggest and most problematic case is in our panel that we use to display a tree of results of an job the client ran..once they go to view a new result this is executed along with some other stuff in a set results method:

Code:
    
public void setResult(final JobProcessorDTO jobDTO, final ResultTreePanelListener rptl)
    {
        if (resultsTreePanel != null)
        {
            remove(resultsTreePanel);
        }
        resultsTreePanel = new ResultsTreePanel(jobDTO, rptl);
        resultsTreePanel.setColumnWidths(savedColWidths);
        }
        if (jobDTO.getMatchResults().size() != 0)
        {
            moreResults.setEnabled(true);
        }
        else
        {
            moreResults.setEnabled(false);
        }
        this.rptl = rptl;
        this.jobDTO = jobDTO;
        add(resultsTreePanel);
        layout();
    }
When a client runs a single job there can be anything from 1 to 10,000 records and when the select a record to process it returns a list of results and they can itterate through each with a next/previous button..when they itterate to a new result it builds a new results tree panel and rerenders the ResultsPanel. We're expecting the old ResultsTreePanel to get garbage collected but its not..so as you can imagine this causes huge issues as each result viewed jumps the browser memory up around 10,000K and never releases..

Any help or tips would be greatly appreciated as we're stuck dead in the water with this one