import javax.swing.*;
public class Main
{
public Main()
{
JFrame jf = new JFrame(\"Demo\");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Given the invokeLater() call, the call to GC will probably occur 1st1.
BTW - calling Runtime.gc() is generally pointless, the JRE won't GC till it needs to.
GC called
Frame visible
package test;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class VisibleFrameGC {
VisibleFrameGC() {
JFrame jf = new JFrame("Demo");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(100, 100);
jf.setVisible(true);
System.out.println("Frame visible");
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new VisibleFrameGC();
}
});
Runtime.getRuntime().gc();
System.out.println("GC called");
}
}