不是说java垃圾回收是对象没引用指针了就可以当垃圾清理了吗,那么
(new JFrame()).setVisible(true);
System.gc();后怎么不把窗体回收了?
如果不setVisible(true);再调用System.gc();会不会清理?还有new Thread(new Runnable{public void run(){...}});
也是没引用
调用System.gc()垃圾回收会不会把这个线程kill了?谢谢高手解答!!^_^
(new JFrame()).setVisible(true);
System.gc();后怎么不把窗体回收了?
如果不setVisible(true);再调用System.gc();会不会清理?还有new Thread(new Runnable{public void run(){...}});
也是没引用
调用System.gc()垃圾回收会不会把这个线程kill了?谢谢高手解答!!^_^
解决方案 »
- JTextArea内容增加时整体布局被改变
- 在这个网页中加人可关闭的右侧的浮动广告,我家了几次都失败了!!
- 【急求】swing JFrame中点击某个按钮执行后台的方法(时间可能长),此时如何弹出一个loading图片
- 怎么写软件帮助中的“关于”功能
- 为什么删除不了商品
- ████ 请问怎么得到系统时间并将其插入到sql server数据库的datatime字段呢?█████
- *****关于继承后函数覆写的问题******
- java初学者疑惑,请各位高手指点!
- 在JB5里做了一个实体BEAN,SQLSERVER的驱动也已经填加到JB5的LIBRARIES里,做的过程中一切都正常,连接数据库都正常,但我用客户端测试的时候却出现以下问题,昨天发了一个求救,被管理员删了,希望今天别删了
- 我是用delphi的,可今天去一个单位,那边说要用java,JBuilder。...........
- 一道面试题
- 大家来看看我的问题出在哪里了
这句并没有释放JFrame的引用,应该dispose一把释放才行。而对于线程来说,必须是没有引用并且isAlive()为false的时候才能被gc收集
{ Test()
{
setSize(600,400);
//setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
protected void finalize()
{
System.out.println("回收");
} public static void main(String[] args)
{
new Test();
System.gc();
}
}
从结果可以看出 如果不调用setVisible()方法
就要被清理 调用了就不被清理
不知道是啥原因
这句并没有释放JFrame的引用,应该dispose一把释放才行。 而对于线程来说,必须是没有引用并且isAlive()为false的时候才能被gc收集
public static final List listTemp = new ArrayList();
}class FatherClass{
public FatherClass(){
MemoryControlUtil.listTemp.add(this);
}
}
class Son extends FatherClass{
@Override
protected void finalize()
{
System.out.println("回收");
}
}
class MainClass{
public static void main(String[] args){
new Son();
while(true){
System.out.println(MemoryControlUtil.listTemp);
}
}
}这样就不会回收了。说明,JFrame对象,JAVA在帮我注册到了一些控制器里,setVisiable应该是注册的操作。