Bug 9826 [Contributions] ActionContributionItem caches Images forever
ActionContributionItem has an image cache that caches images forever, and won't release them until the Display goes down. If an Action updates its Image, such as a background color or foreground color action, It's ImageDescriptor is constantly changing. ActionContributionItem$ImageCache creates an SWT Image for each descriptor. I verified this by constantly (a.k.a. programmatically) changing an actions ImageDescriptor, using only ImageData to build the descriptor. I quickly got a "no more handles" crash.
bundles/org.eclipse.jface/src/org/eclipse/jface/action/ActionContributionItem.java
*/
	public void update(String propertyName) {
		if (widget != null) {
						
			boolean textChanged = propertyName == null || propertyName.equals(IAction.TEXT);
			boolean imageChanged = propertyName == null || propertyName.equals(IAction.IMAGE);
			boolean tooltipTextChanged =
				propertyName == null || propertyName.equals(IAction.TOOL_TIP_TEXT);
			boolean enableStateChanged =
				propertyName == null
					|| propertyName.equals(IAction.ENABLED)
					|| propertyName.equals(IContributionManagerOverrides.P_ENABLED);
			boolean checkChanged =
				(action.getStyle() == IAction.AS_CHECK_BOX
					|| action.getStyle() == IAction.AS_RADIO_BUTTON)
					&& (propertyName == null || propertyName.equals(IAction.CHECKED));
			if (widget instanceof ToolItem) {
				ToolItem ti = (ToolItem) widget;
				String text = action.getText();
				
				boolean showText = text != null && ((getMode() & MODE_FORCE_TEXT) != 0 || !hasImages(action));
				
				
				if (showText && text != null) {
					text = Action.removeAcceleratorText(text);
					text = Action.removeMnemonics(text);
				}
				if (textChanged) {
					String textToSet = showText ? text : ""; 
					boolean rightStyle = (ti.getParent().getStyle() & SWT.RIGHT) != 0;