2013-05-12 40 views
0

我正在创建一个简单的JFrame窗口并检查Windows任务管理器的内存使用情况,并且当我尝试使用鼠标指针调整JFrame大小而不是最大化按钮时,它会从51,000增加大量内存k到400,000k,它永远不会下降,但当我使用最大的按钮,它甚至没有增加内存。调整JFrame的大小添加大量内存

是什么导致它增加大量的内存,它永远不会停机?

Image bg = new ImageIcon(getClass().getResource("circle.png")).getImage(); 
    JFrame jf = new JFrame("MySqlConnections"); 
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jf.setSize(400,400); 
    jf.setIconImage(bg); 
    new ConnectMysql(jf); 
    jf.setLocationRelativeTo(null); 
    jf.setPreferredSize(new Dimension(xFrame, yFrame)); 
    jf.setMinimumSize(jf.getPreferredSize()); 
    jf.setVisible(true); 


public static void main(String[] args) { 
    new MainFrame(); 
    /* Total number of processors or cores available to the JVM */ 
    System.out.println("Available processors (cores): " + 
     Runtime.getRuntime().availableProcessors()); 

    /* Total amount of free memory available to the JVM */ 
    System.out.println("Free memory (bytes): " + 
     Runtime.getRuntime().freeMemory()); 

    /* This will return Long.MAX_VALUE if there is no preset limit */ 
    long maxMemory = Runtime.getRuntime().maxMemory(); 
    /* Maximum amount of memory the JVM will attempt to use */ 
    System.out.println("Maximum memory (bytes): " + 
     (maxMemory == Long.MAX_VALUE ? "no limit" : maxMemory)); 

    /* Total memory currently in use by the JVM */ 
    System.out.println("Total memory (bytes): " + 
     Runtime.getRuntime().totalMemory()); 

    /* Get a list of all filesystem roots on this system */ 
    File[] roots = File.listRoots(); 

    /* For each filesystem root, print some info */ 
    for (File root : roots) { 
     System.out.println("File system root: " + root.getAbsolutePath()); 
     System.out.println("Total space (bytes): " + root.getTotalSpace()); 
     System.out.println("Free space (bytes): " + root.getFreeSpace()); 
     System.out.println("Usable space (bytes): " + root.getUsableSpace()); 
    } 

} 
+0

这将有很多与你在做什么,当框架调整大小。你能否提供演示问题的示例代码... – MadProgrammer 2013-05-12 07:24:59

+0

为了更快提供更好的帮助,请发布[SSCCE](http://sscce.org/)。已编辑 – 2013-05-12 07:36:59

+0

。 – 2013-05-12 07:53:55

回答

1

它可能会增加内存,因为您一步一步地调整大小,它需要一遍又一遍地重新绘制全帧。为什么它不会停止,因为它取决于垃圾回收器,它不会立即运行每当有空间释放一些内存时。