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 (enableStateChanged) {
					boolean shouldBeEnabled = action.isEnabled() && isEnabledAllowed();
					if (mi.getEnabled() != shouldBeEnabled)
						mi.setEnabled(shouldBeEnabled);
				}
				if (checkChanged) {
					boolean bv = action.isChecked();
					if (mi.getSelection() != bv)
						mi.setSelection(bv);
				}
				return;
			}
			if (widget instanceof Button) {
				Button button = (Button) widget;
				if (imageChanged && updateImages(false))
					textChanged = false; 
				if (textChanged) {
					String text = action.getText();
					if (text != null)
						button.setText(text);
				}
				if (tooltipTextChanged)
					button.setToolTipText(action.getToolTipText());
				if (enableStateChanged) {
					boolean shouldBeEnabled = action.isEnabled() && isEnabledAllowed();
					if (button.getEnabled() != shouldBeEnabled)
						button.setEnabled(shouldBeEnabled);
				}
				if (checkChanged) {
					boolean bv = action.isChecked();