On Mon, 9 Jun 2025 02:14:09 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> 
wrote:

>> src/java.desktop/share/classes/javax/swing/ImageIcon.java line 305:
>> 
>>> 303:                 return;
>>> 304:             }
>>> 305:             mTracker.addImage(image, id);
>> 
>> Hmm. Is there any acceptable logging we could use here?
>> 
>> (I'm just thinking: from the perspective of a developer trying to debug a 
>> customer complaint, this would be a lot easier to identify in System.err 
>> mentioned it...? Otherwise I'd start by trying to look for potential memory 
>> leaks or other red herrings.)
>
> I dont think there is any logging for this nor do we want to log...In all 
> probability, the image will consume the heap memory so practically OOM will 
> be raised by the time this overflow happens but it can happen if maybe all 
> 1x1 images are used and subsequent needed memory reserved for Java process

OK. I don't feel like I really understand this fix (or the need for it), but I 
also am not too worried about it.

FWIW I was able to trigger this condition in an app that ran for about 30 
minutes. (Maybe if I turned up the thread priority it could be faster?) I'm not 
going to keep exploring this, though, unless a pointed question comes up.


import javax.swing.*;
import java.awt.*;

public class ImageIconTest {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame();
                ImageIcon icon = new ImageIcon();
                Image image = 
Toolkit.getDefaultToolkit().createImage("onepixel.gif");
                icon.setImage(image);
                JLabel label = new JLabel(icon);
                f.getContentPane().add(label);
                f.pack();
                f.setVisible(true);

                Thread t = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        while (true) {
                            icon.setImage(image);
                        }
                    }
                });
                t.start();
            }
        });
    }
}

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/25666#discussion_r2135090608

Reply via email to