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
}
					    }
					}
					
					if (accelerator == 0) {
						if ((callback != null) && (commandId != null)) {
						    acceleratorText = callback.getAcceleratorText(commandId);
						}
					} else {
						acceleratorText = Action.convertAccelerator(accelerator);
					}
					IContributionManagerOverrides overrides = null;
					if (getParent() != null)
						overrides = getParent().getOverrides();
					if (overrides != null)
						text = getParent().getOverrides().getText(this);
					mi.setAccelerator(accelerator);
					if (text == null)
						text = updatedAction.getText();
					if (text == null)
						text = ""; 
					else
						text = Action.removeAcceleratorText(text);
					if (acceleratorText == null)
						mi.setText(text);
					else
						mi.setText(text + '\t' + acceleratorText);
				}
				if (imageChanged)
					updateImages(false);