为什么窗体调用dispose还是存在这个实例? Java中的objects是被garbage collector回收的,不是靠程序员人工回收。这是和C++的重大区别之一。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那又怎么样,你的意思是说不定规什么时候才能真正消失,但文档说只要重新调用show或者pack就能两次显示,这不和所有资源被释放矛盾吗 当然不是了看你的意思,你把Dialog定义成类的成员了,那么当然不会被回收,除非你在show之后设置为null.还有JDialog对象如果不dispose的话,即使设置为null也不会被回收,这是要注意的地方 jframe也是一样的能把你的代码贴出来看看吗 我跟踪了一下程序,第一次打开时是创建这个实例,然后show,第二次的时候,因为实例仍然存在,所以直接就打开了。有没有真正关闭的办法--------------------------------------------------如果你能在第二次中判断这个instance,那么肯定你的程序中还有指向这个instance的reference,所以该对象不能被回收 的确是引用仍然存在,因为它是一个类的实例变量,不是局部,因为这个原因?class ProjectButton extends JButton implements ActionListener { public ProjectButton(conDB conapp) { this.conIns = conapp; //设置按钮文字 setText("项目状况"); //设置按钮上的图片 setIcon(new ImageIcon("project.gif")); //对"单击"按钮事件监听 addActionListener(this); } //该类为按钮增添了监听器,当"单击"按钮时触发这段代码 public void actionPerformed(ActionEvent e) { //当"项目记录管理"子界面已经打开了就不创建该子界面, //如果该子界面没有打开则创建该子界面并且显示 if(proRecTable == null) { proRecTable = new ProjectRecordTable(conIns); proRecTable.show(); } else { proRecTable.show(); } } //数据库连接类的对象 private conDB conIns; //私有变量,"项目记录管理"子界面 private ProjectRecordTable proRecTable = null;//它是要打开的窗体}如果是实例变量,岂非每次打开都要判断一下是否为null?或者直接声明时就创建实例(不太好,占资源)还是声明为局部变量 如果你这么写,那么当然,这个ProjectRecordTable实例创建之后就会一直保存着,因为你的ProjectButton对象还有指向这个实例的应用。如果你想及时回收的话,把proRecTable申明为局部变量,或者在proRecTable.show();加上proRecTable = null;还有要注意的地方,要dispose. 请教一个句柄调用的声明,,, [求职]初学java 遇到拦路虎 请教高手帮忙看看这个查询小程序 SWT部件数组的问题 --->请注重基本功的程序员进来看看 帮我看一下好么?谢谢! 执行excuteUpdate为什么没有反应?? tomcat 配置问题 这段代码到底那里错了!???为什么一直通不过啊!55555 fastjson 中 identityHasMap的疑问 如何判断一个变量的数据类型是int型的? Eclipse是否有图形开发的插件(awt和swing)?
看你的意思,你把Dialog定义成类的成员了,那么当然不会被回收,除非你在show之后设置为null.
还有JDialog对象如果不dispose的话,即使设置为null也不会被回收,这是要注意的地方
能把你的代码贴出来看看吗
--------------------------------------------------
如果你能在第二次中判断这个instance,那么肯定你的程序中还有指向这个instance的reference,所以该对象不能被回收
class ProjectButton extends JButton implements ActionListener {
public ProjectButton(conDB conapp) {
this.conIns = conapp;
//设置按钮文字
setText("项目状况");
//设置按钮上的图片
setIcon(new ImageIcon("project.gif"));
//对"单击"按钮事件监听
addActionListener(this);
} //该类为按钮增添了监听器,当"单击"按钮时触发这段代码
public void actionPerformed(ActionEvent e) {
//当"项目记录管理"子界面已经打开了就不创建该子界面,
//如果该子界面没有打开则创建该子界面并且显示
if(proRecTable == null) {
proRecTable = new ProjectRecordTable(conIns);
proRecTable.show();
} else {
proRecTable.show();
}
} //数据库连接类的对象
private conDB conIns;
//私有变量,"项目记录管理"子界面
private ProjectRecordTable proRecTable = null;//它是要打开的窗体}
如果是实例变量,岂非每次打开都要判断一下是否为null?或者直接声明时就创建实例(不太好,占资源)还是声明为局部变量