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
* </p>
 *
 * @param the element
 * @return the corresponding widget, or <code>null</code> if none
 */
protected abstract Widget doFindItem(Object element);
/**
 * Copies the attributes of the given element into the given SWT item.
 * The element map is updated according to the value of <code>fullMap</code>.
 * If <code>fullMap</code> is <code>true</code> then the current mapping
 * from element to widgets is removed and the new mapping is added. 
 * If fullmap is <code>false</code> then only the new map gets installed.
 * Installing only the new map is necessary in cases where only
 * the order of elements changes but not the set of elements.
 * <p>
 * This method is internal to the framework; subclassers should not call
 * this method.
 * </p>
 *
 * @param item
 * @param element the element
 * @param fullMap <code>true</code> if mappings are added and removed,
 *   and <code>false</code> if only the new map gets installed
 */
protected abstract void doUpdateItem(
	Widget item,
	Object element,
	boolean fullMap);
/**
 * Compares two elements for equality.