Bug 44827 [Viewers] StructuredViewer's UpdateItemSafeRunnable holds onto last selected element-memory leak
I have a TableViewer that normally displays a list of objects. I clear the list by calling TableViewer.setInput(null). I found that if I initially have a list of objects, select an object, then setInput(null) the TableViewer is still holding onto an instance of the object I last selected. More specifically, it looks like StructuredViewer's UpdateItemSafeRunnable is holding onto the object. The UpdateItemSafeRunnable object should be cleared out after its use.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java
* @param event the SWT selection event
 */
protected void handleOpen(SelectionEvent event) {
	Control control = getControl();
	if (control != null && !control.isDisposed()) {
		ISelection selection = getSelection();
		fireOpen(new OpenEvent(this, selection));
	}
}
/**
 * Handles an invalid selection.
 * <p>
 * This framework method is called if a model change picked up by a viewer
 * results in an invalid selection. For instance if an element contained
 * in the selection has been removed from the viewer, the viewer is free
 * to either remove the element from the selection or to pick another element
 * as its new selection.
 * The default implementation of this method calls <code>updateSelection</code>.
 * Subclasses may override it to implement a different strategy for picking
 * a new selection when the old selection becomes invalid.
 * </p>
 *
 * @param invalidSelection the selection before the viewer was updated
 * @param newSelection the selection after the update, or <code>null</code> if none
 */
protected void handleInvalidSelection(ISelection invalidSelection, ISelection newSelection) {
	updateSelection(newSelection);
	SelectionChangedEvent event = new SelectionChangedEvent(this, newSelection);
	firePostSelectionChanged(event);
}