关于对象的生存期问题,和内存回收器的问题
来源: 互联网 发布时间:2015-01-24
本文导语: 看下面的代码: void jButton1_actionPerformed(ActionEvent e) { myFrame = new JFrame("Frame1"); myFrame.setSize(300,200) ; myFrame.setVisible(true) ; myFrame.show(); } void jButton2_actionPerformed(ActionEven...
看下面的代码:
void jButton1_actionPerformed(ActionEvent e) {
myFrame = new JFrame("Frame1");
myFrame.setSize(300,200) ;
myFrame.setVisible(true) ;
myFrame.show();
}
void jButton2_actionPerformed(ActionEvent e) {
myFrame = new JFrame("Frame2");
myFrame.setSize(300,200) ;
myFrame.setVisible(true) ;
myFrame.show() ;
}
其中
myFrame在类开始定义,使全局的如下:
public class Frame1 extends JFrame {
JFrame myFrame = null;
.......
}
先点按钮一,弹出窗口,点按钮二,也弹出窗口,请问第一个窗口没有变量指向,
是否会被内存回收器回收?
兄弟刚学java ,如提的幼稚,请不要见笑.
void jButton1_actionPerformed(ActionEvent e) {
myFrame = new JFrame("Frame1");
myFrame.setSize(300,200) ;
myFrame.setVisible(true) ;
myFrame.show();
}
void jButton2_actionPerformed(ActionEvent e) {
myFrame = new JFrame("Frame2");
myFrame.setSize(300,200) ;
myFrame.setVisible(true) ;
myFrame.show() ;
}
其中
myFrame在类开始定义,使全局的如下:
public class Frame1 extends JFrame {
JFrame myFrame = null;
.......
}
先点按钮一,弹出窗口,点按钮二,也弹出窗口,请问第一个窗口没有变量指向,
是否会被内存回收器回收?
兄弟刚学java ,如提的幼稚,请不要见笑.
|
不被myframe引用,但是有别的引用的
这个窗口既然要显示,swing(或者awt)那边一定保留着引用。你也可以通过swing引用过去,一定可以找到所有窗口的一个线性表。
这个窗口既然要显示,swing(或者awt)那边一定保留着引用。你也可以通过swing引用过去,一定可以找到所有窗口的一个线性表。
|
frame.dispose(); 释放frame占用的一切资源
|
不会被内存回收器回收
frame 因为没被关闭
frame.dispose(); 会被内存回收器回收
frame 因为没被关闭
frame.dispose(); 会被内存回收器回收