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
* @see org.eclipse.swt.dnd.DND
 */
public void addDragSupport(
	int operations, 
	Transfer[] transferTypes, 
	DragSourceListener listener) {
	Control myControl = getControl();
	final DragSource dragSource = new DragSource(myControl, operations);
	dragSource.setTransfer(transferTypes);
	dragSource.addDragListener(listener);
}
/**
 * Adds support for dropping items into this viewer via
 * a user drag-and-drop operation.
 *
 * @param operations a bitwise OR of the supported drag and drop operation
 *  types (<code>DROP_COPY</code>, <code>DROP_LINK</code>, and <code>DROP_MOVE</code>)
 * @param transferTypes the transfer types that are supported by the drop operation
 * @param listener the callback that will be invoked after the drag and drop operation finishes
 * @see org.eclipse.swt.dnd.DND
 */
public void addDropSupport(int operations, Transfer[] transferTypes, final DropTargetListener listener) {
	Control control = getControl();
	DropTarget dropTarget = new DropTarget(control, operations);
	dropTarget.setTransfer(transferTypes);
	dropTarget.addDropListener(listener);
}
/**
 * Adds the given filter to this viewer,
 * and triggers refiltering and resorting of the elements.