--- old/src/share/classes/sun/awt/SunToolkit.java 2015-06-23 19:06:16.902515800 -0700 +++ new/src/share/classes/sun/awt/SunToolkit.java 2015-06-23 19:06:16.400465600 -0700 @@ -715,16 +715,19 @@ } - static final SoftCache imgCache = new SoftCache(); + static final SoftCache fileImgCache = new SoftCache(); + + static final SoftCache urlImgCache = new SoftCache(); static Image getImageFromHash(Toolkit tk, URL url) { checkPermissions(url); - synchronized (imgCache) { - Image img = (Image)imgCache.get(url); + synchronized (urlImgCache) { + String key = url.toString(); + Image img = (Image)urlImgCache.get(key); if (img == null) { try { img = tk.createImage(new URLImageSource(url)); - imgCache.put(url, img); + urlImgCache.put(key, img); } catch (Exception e) { } } @@ -735,12 +738,12 @@ static Image getImageFromHash(Toolkit tk, String filename) { checkPermissions(filename); - synchronized (imgCache) { - Image img = (Image)imgCache.get(filename); + synchronized (fileImgCache) { + Image img = (Image)fileImgCache.get(filename); if (img == null) { try { img = tk.createImage(new FileImageSource(filename)); - imgCache.put(filename, img); + fileImgCache.put(filename, img); } catch (Exception e) { } } @@ -758,28 +761,29 @@ protected Image getImageWithResolutionVariant(String fileName, String resolutionVariantName) { - synchronized (imgCache) { + synchronized (fileImgCache) { Image image = getImageFromHash(this, fileName); if (image instanceof MultiResolutionImage) { return image; } Image resolutionVariant = getImageFromHash(this, resolutionVariantName); image = createImageWithResolutionVariant(image, resolutionVariant); - imgCache.put(fileName, image); + fileImgCache.put(fileName, image); return image; } } protected Image getImageWithResolutionVariant(URL url, URL resolutionVariantURL) { - synchronized (imgCache) { + synchronized (urlImgCache) { Image image = getImageFromHash(this, url); if (image instanceof MultiResolutionImage) { return image; } Image resolutionVariant = getImageFromHash(this, resolutionVariantURL); image = createImageWithResolutionVariant(image, resolutionVariant); - imgCache.put(url, image); + String key = url.toString(); + urlImgCache.put(key, image); return image; } } @@ -884,8 +888,13 @@ return null; } - protected static boolean imageCached(Object key) { - return imgCache.containsKey(key); + protected static boolean imageCached(String fileName) { + return fileImgCache.containsKey(fileName); + } + + protected static boolean imageCached(URL url) { + String key = url.toString(); + return urlImgCache.containsKey(key); } protected static boolean imageExists(String filename) {