Community
Participate
Working Groups
Build ID: I20080617-2000 Steps To Reproduce: Grid have a number of not garbage collected fields caused by crossreferences. Please fix onDispose method of Grid. Grid line:6138 :::::FROM::::: private void onDispose(Event event) { //We only want to dispose of our items and such *after* anybody else who may have been //listening to the dispose has had a chance to do whatever. removeListener(SWT.Dispose, disposeListener); notifyListeners(SWT.Dispose, event); event.type = SWT.None; disposing = true; cellHeaderSelectionBackground.dispose(); for (Iterator iterator = items.iterator(); iterator.hasNext();) { GridItem item = (GridItem)iterator.next(); item.dispose(); } for (int i = 0; i < columnGroups.length; i++) { columnGroups[i].dispose(); } for (Iterator iterator = columns.iterator(); iterator.hasNext();) { GridColumn col = (GridColumn)iterator.next(); col.dispose(); } sizingGC.dispose(); } :::::TO::::: private void onDispose(Event event) { //We only want to dispose of our items and such *after* anybody else who may have been //listening to the dispose has had a chance to do whatever. removeListener(SWT.Dispose, disposeListener); notifyListeners(SWT.Dispose, event); event.type = SWT.None; disposing = true; cellHeaderSelectionBackground.dispose(); if(items != null) { for (Iterator iterator = items.iterator(); iterator.hasNext();) { GridItem item = (GridItem)iterator.next(); item.dispose(); } items.clear(); items = null; selectedItems.clear(); selectedItems = null; rootItems.clear(); rootItems = null; } if(columnGroups != null) { for (int i = 0; i < columnGroups.length; i++) { columnGroups[i].dispose(); } columnGroups = null; } if(columns != null) { for (Iterator iterator = columns.iterator(); iterator.hasNext();) { GridColumn col = (GridColumn)iterator.next(); col.dispose(); } columns.clear(); columns = null; selectedColumns.clear(); selectedColumns = null; } if(selectedCells != null) { selectedCells.clear(); selectedCells = null; } if(selectedCellsBeforeRangeSelect != null) { selectedCellsBeforeRangeSelect.clear(); selectedCellsBeforeRangeSelect = null; } if(sizingGC != null) { sizingGC.dispose(); sizingGC = null; } if(displayOrderedColumns != null) { displayOrderedColumns.clear(); displayOrderedColumns = null; } if(emptyCellRenderer != null) { emptyCellRenderer.setDisplay(null); emptyCellRenderer = null; } if(emptyColumnHeaderRenderer != null) { emptyColumnHeaderRenderer.setDisplay(null); emptyColumnHeaderRenderer = null; } if(emptyRowHeaderRenderer != null) { emptyRowHeaderRenderer.setDisplay(null); emptyRowHeaderRenderer = null; } if(rowHeaderRenderer != null) { rowHeaderRenderer.setDisplay(null); rowHeaderRenderer = null; } if(topLeftRenderer != null) { topLeftRenderer.setDisplay(null); topLeftRenderer = null; } } More information:
Could you please create a patch against header_footer branch so that I can keep our IP-Log clean the I'll commit it to CVS
Please provide a patch against HEAD
Hi all, New implementation remove all data visualization collections. Please see: https://git.eclipse.org/r/#/c/21324/ https://bugs.eclipse.org/bugs/show_bug.cgi?id=419928 http://mirkopaturzo.wordpress.com/2014/02/06/grid-contribution-improve-performace/ Please see snippets below: http://git.eclipse.org/c/nebula/org.eclipse.nebula.git/tree/examples/org.eclipse.nebula.snippets/src/org/eclipse/nebula/snippets/grid/viewer/GridViewerSnippetWithAdaptedDataVisualizer.java http://git.eclipse.org/c/nebula/org.eclipse.nebula.git/tree/examples/org.eclipse.nebula.snippets/src/org/eclipse/nebula/snippets/grid/viewer/GridViewerSnippetWithColumnRowBigDataVisualizer.java http://git.eclipse.org/c/nebula/org.eclipse.nebula.git/tree/examples/org.eclipse.nebula.snippets/src/org/eclipse/nebula/snippets/grid/viewer/GridViewerSnippetWithRowColumnBigDataVisualizer.java Soon, another snippet with dispose example. Mirko
Improve dispose performace and create a snippet test.
Test done and bug fixed