垃圾收集器问题 本帖最后由 java2000_net 于 2008-08-04 20:59:55 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1个首先c1.go(c2)这里,c2这个参数是一个副本,所以它被赋为null不会引起垃圾回收而return了个null赋给c3,c3本来就没有被赋值,所以也没有引起垃圾回收然后c1=null;本来c1被赋给了一个对象,但是这个时候c1不指向这个对象了,这样就有可能引起垃圾回收了 同意楼上,只有一个.CarBoard c1=new CarBoard();CarBoard c2=new CarBoard(); c1和c2分别持有两个对象的引用.CarBoard c3=c1.go(c2); CarBoard go(CarBoard cb){cb=null;return cb;} 注意方法调用的时候,形式参数cb和实际参数c2是两个东西,不过它们的内容相同,指向同一个对象.在方法中让cb为null,c2不受影响,仍然指向原来的对象.返回null之后,c3为nullc1=null; 这时候c1原来引用的对象因为不存在对它的引用了,所以是可回收的.而且只有这一个可回收. 我认为就这个程序而言当运行到end的时候所有对象都符合垃圾回收机制。因为这段程序到这里就要结束了所有的对象都是不会再被使用的对象了。 谢谢!明白了,那么c1=null;以后c1里的Short s=5;这个对象符合吗? 谢谢!明白了,那么c1=null;以后c1里的Short s=5;这个对象符合吗? 这个不符合,因为这是CardBoard中的数据成员,只要这个类的对象存在,它就存在.这样说就有些乱了.在c1原来指向的CardBoard对象中有一个Short s=5这个对象,c1原来指向的对象回收的时候它肯定一起回收了.比较绕. 使用jdk自带的jconsole或Optimizeit,会看到GC的过程~~~ 使用异常结束线程的疑问 关于Swing的JPanel问题 类加载 发生在什么时候 mysql在Eclipse中配置 新手提问,关于自己写的一个银行类 请高手指点 请达人帮忙!不胜感激! 请问java能不能实现delphi中with..do的功能 在tomcat中怎样改变根目录的路径!! java 属性 user.dir 的问题 windows自带的任务计划运行java程序跟直接双击运行java程序不能达到同一效果 用java代码怎样实现开机自启动
首先c1.go(c2)这里,c2这个参数是一个副本,所以它被赋为null不会引起垃圾回收
而return了个null赋给c3,c3本来就没有被赋值,所以也没有引起垃圾回收
然后c1=null;本来c1被赋给了一个对象,但是这个时候c1不指向这个对象了,这样就有可能引起垃圾回收了
CarBoard c1=new CarBoard();
CarBoard c2=new CarBoard();
c1和c2分别持有两个对象的引用.
CarBoard c3=c1.go(c2);
CarBoard go(CarBoard cb){
cb=null;
return cb;
}
注意方法调用的时候,形式参数cb和实际参数c2是两个东西,不过它们的内容相同,指向同一个对象.
在方法中让cb为null,c2不受影响,仍然指向原来的对象.返回null之后,c3为null
c1=null;
这时候c1原来引用的对象因为不存在对它的引用了,所以是可回收的.而且只有这一个可回收.
这样说就有些乱了.在c1原来指向的CardBoard对象中有一个Short s=5这个对象,c1原来指向的对象回收的时候它肯定一起回收了.比较绕.