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
if (! newSelection.equals(oldSelection))
			handleInvalidSelection(oldSelection, newSelection);
	}
}
/*
 * Non-Javadoc.
 * Method declared on Viewer.
 */
public void refresh() {
	refresh(getRoot());
}
/**
 * Refreshes this viewer with information freshly obtained from this
 * viewer's model.  If <code>updateLabels</code> is <code>true</code>
 * then labels for otherwise unaffected elements are updated as well.
 * Otherwise, it assumes labels for existing elements are unchanged,
 * and labels are only obtained as needed (for example, for new elements).
 * <p>
 * Calling <code>refresh(true)</code> has the same effect as <code>refresh()</code>.
 * <p>
 * Note that the implementation may still obtain labels for existing elements
 * even if <code>updateLabels</code> is false.  The intent is simply to allow
 * optimization where possible.
 * 
 * @param updateLabels <code>true</code> to update labels for existing elements,
 * <code>false</code> to only update labels as needed, assuming that labels
 * for existing elements are unchanged.
 * 
 * @since 2.0
 */