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 (button.getSelection() != bv)
						button.setSelection(bv);
				}
				return;
			}
		}
	}
	/**
	 * Updates the images for this action.
	 *
	 * @param forceImage <code>true</code> if some form of image is compulsory,
	 *  and <code>false</code> if it is acceptable for this item to have no image
	 * @return <code>true</code> if there are images for this action, <code>false</code> if not
	 */
	private boolean updateImages(boolean forceImage) {
		ImageCache cache = getImageCache();
		if (widget instanceof ToolItem) {
			if (USE_COLOR_ICONS) {
				Image image = cache.getImage(action.getHoverImageDescriptor());
				if (image == null) {
					image = cache.getImage(action.getImageDescriptor());
				}
				Image disabledImage = cache.getImage(action.getDisabledImageDescriptor());
				
				if (image == null && forceImage) {
					image = cache.getMissingImage();
				}
				
				if (disabledImage != null) {