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 (rightStyle || !ti.getText().equals(textToSet)) {
						
						 
						
						ti.setText(textToSet);
					}
				}
				if (imageChanged) {
					
					updateImages(!showText);
				}
				if (tooltipTextChanged || textChanged) {
					String toolTip = action.getToolTipText();
					
					if (!showText || toolTip != null && !toolTip.equals(text)) {
						ti.setToolTipText(action.getToolTipText());
					}
					else {
						ti.setToolTipText(null);
					}
				}
				if (enableStateChanged) {
					boolean shouldBeEnabled = action.isEnabled() && isEnabledAllowed();
					if (ti.getEnabled() != shouldBeEnabled)
						ti.setEnabled(shouldBeEnabled);
				}
				if (checkChanged) {
					boolean bv = action.isChecked();
					if (ti.getSelection() != bv)
						ti.setSelection(bv);