问一个JAVA中垃圾回收机制的问题 Button b = new Button();......b = null;执行到上面这一行为止,Button b所占用的内存空间有没有被回收?最好能讲出个道理来,或者能给出相关的参考资料 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用到这里的时候 b 所占用的内存并没有释放。b是一个句柄,他的生命周期是从创建时开始,到这个方法结束时回收。b = NULL;这样写,就把 原来b与原来他指向的对象给隔离了。目的是为了让gc尽快地将b原来指向的那个对象清理掉。至于b自己,还是上面所说的 方法结束时回收 B = NULL并不是说引用对象B就没有了,只是让他成为空引用,指向空。至于什么使命释放,一般来说是一个方法结束的时候,但是这个也并不一定。主要是由垃圾回收器GC来决定什么时候回收内存。 原来new出来得对象就应该被回收了 这个时候b所指向的对象是可以被回收了,什么时候回收是GC说了算,你可以不管了。 过一段时间回收,首先b的引用变量的地址为null,那么b就没有指向任何对象,这个时候这个对象就是象‘脱了线的野马没人管’,Java虚拟机在一段时间内进行自检发现对象没有被引用就将其消毁。 GC的机制就不需要关了JAVA会在它自认为合适的时候删除这个对象所以JAVA里没有类似C的析构函数因为对象删除的时机无法确定 你把Button换成自己写的一个类,然后在这个类里重写finalize方法,在finalize里面System.out一些东西,就能看得比较清楚了 public class A{ public void finalize(){ System.out.println("对象销毁"); } public static void main(String[] args){ A a = new A(); a = null; }}JVM会自动查找没有有效引用得对象,然后释放空间,但是时机是不确定得,即使你调用System.gc()也不能保证全都收集 to Rick_ang(东方未名)怎么什么也没打印出来啊(底子薄) A a = new A(); a = null;System.gc(); b只是个引用而已..b=null就表示不不指向new Button()了。。它只是个空引用。。这里之后系统就有意思回收new Button()了。 错在何处 问一个字符串分割 关于Swing中按钮的问题 JVM内存问题 java中如何画点?在哪个类里?谢谢 请教一个关于applet的初级问题 java中如何不使用JDBC-ODBC桥访问MDB数据库? 请问使用jakarta poi读取excel文件时怎么判断cell中是日期型数据? applet有办法关闭它所在的IE窗口吗? java时间计算问题 关于JTabbedPane的两个问题 这两种环境设置的方法有什么异同?
b是一个句柄,他的生命周期是从创建时开始,到这个方法结束时回收。b = NULL;
这样写,就把 原来b与原来他指向的对象给隔离了。
目的是为了让gc尽快地将b原来指向的那个对象清理掉。至于b自己,还是上面所说的 方法结束时回收
至于什么使命释放,一般来说是一个方法结束的时候,但是这个也并不一定。主要是由垃圾回收器GC来决定什么时候回收内存。
JAVA会在它自认为合适的时候删除这个对象所以JAVA里没有类似C的析构函数
因为对象删除的时机无法确定
public void finalize(){
System.out.println("对象销毁");
} public static void main(String[] args){
A a = new A();
a = null;
}
}JVM会自动查找没有有效引用得对象,然后释放空间,但是时机是不确定得,即使你调用System.gc()也不能保证全都收集
怎么什么也没打印出来啊
(底子薄)
a = null;System.gc();