当前位置: 技术问答>java相关
关于赋值为null的一点疑问,高分求教
来源: 互联网 发布时间:2015-02-24
本文导语: 有 Object a=new Object(); 那么 a=null; 该怎么理解? 是将句柄a的值设为null,还是将句柄a所引用的对象设为null? 此时理论上可以gc了吗? | 我的看法是将句柄a的值设为null,即不指向任何对象。 从理...
有
Object a=new Object();
那么
a=null;
该怎么理解?
是将句柄a的值设为null,还是将句柄a所引用的对象设为null?
此时理论上可以gc了吗?
Object a=new Object();
那么
a=null;
该怎么理解?
是将句柄a的值设为null,还是将句柄a所引用的对象设为null?
此时理论上可以gc了吗?
|
我的看法是将句柄a的值设为null,即不指向任何对象。
从理论上讲,是可以gc了。
不知道大家有什么不同看法?
从理论上讲,是可以gc了。
不知道大家有什么不同看法?
|
本来a是指向刚new的一个Object
这时把a指向了null,那么Object对象
没有谁引用了,gc就可以收集它了
这时把a指向了null,那么Object对象
没有谁引用了,gc就可以收集它了
|
Object a=new Object();
表示在内存堆里创建一个对象,由系统显示划分出一段内存,然后加载对象到内存空间,同时
句柄a内的指针指向那段内存的地址,然后你就可以操纵内存中的对象.
Object a;
a=null;
表示在内存栽里创建创建一个Object类型的句柄(实际是一指针),而将指针的初始值赋为NULL,
即不指向任何对象.JAVA可以允许空句柄的存在,即一个句柄可以先在载中创建,而没有实际
的对象实体与之关联;但JAVA不允许孤立的对象实体存在,如果存在,编译器不会报错,
但程序运行时,这样的对象就归垃及清理器处理了。
表示在内存堆里创建一个对象,由系统显示划分出一段内存,然后加载对象到内存空间,同时
句柄a内的指针指向那段内存的地址,然后你就可以操纵内存中的对象.
Object a;
a=null;
表示在内存栽里创建创建一个Object类型的句柄(实际是一指针),而将指针的初始值赋为NULL,
即不指向任何对象.JAVA可以允许空句柄的存在,即一个句柄可以先在载中创建,而没有实际
的对象实体与之关联;但JAVA不允许孤立的对象实体存在,如果存在,编译器不会报错,
但程序运行时,这样的对象就归垃及清理器处理了。