JAVA 对象被垃圾回收后其成员变量可用吗?
来源:互联网 发布:沙丁鱼流量软件下载 编辑:程序博客网 时间:2024/04/28 22:55
我们知道JVM中一个对象实例超出作用域或无引用的时候会被垃圾回收,那么他被垃圾回收后,依赖其成员变量的其他实例是否还能正常使用呢?经过测试后发现即使一个实例被垃圾回收,如果他内部的数据被其他对象使用,是不受影响的,下面看这个示例
package test;public class mytest {public static void main(String[] args) throws Exception {HandleBuffer hb = null;{Buffer buf = new Buffer();hb = new HandleBuffer(buf.getBuf());buf = null;}System.out.println("Has Buffer gone away?");System.in.read();Runtime.getRuntime().gc();System.out.println("first gc finished!");System.in.read();System.out.println("Has Buffer gone away?");Thread.currentThread().sleep(1000);System.out.println(hb);System.in.read();}}class Buffer{private byte[] buf = new byte[1024];public Buffer(){this.buf = "abc".getBytes();}public byte[] getBuf(){return this.buf;}@Overrideprotected void finalize() throws Throwable {System.out.println("Buffer gone away!");}}class HandleBuffer{byte[] buf = null;public HandleBuffer(byte[] buf){this.buf = buf;}@Overridepublic String toString() {return new String(buf);}}
下面为程序运行输出:
Has Buffer gone away?first gc finished!Has Buffer gone away?Buffer gone away! //此时对象已被垃圾回收abc //访问数据正常
- JAVA 对象被垃圾回收后其成员变量可用吗?
- Java对象垃圾回收
- 面向对象——概念(成员变量、静态变量、成员方法、静态方法、垃圾回收机制、重载、包)
- java成员变量何时被回收,以及监听回收
- Java:对象与垃圾回收
- Java对象与垃圾回收
- Java - 对象与垃圾回收
- Java 对象与垃圾回收
- Java对象与垃圾回收
- Java对象与垃圾回收
- VC++6.0中定义一个类的对象后,用“.”访问其成员函数和成员变量时,其成员函数和成员变量没有自动弹出
- java类变量的垃圾回收问题
- JAVA垃圾回收器怎么判断哪个变量需要回收
- JAVA垃圾回收器怎么判断哪个变量需要回收
- java中的对象和垃圾回收
- Java中的垃圾回收与对象生命周期
- Java- 对象清楚与垃圾回收
- Java中的垃圾回收与对象生命周期
- Eclipse生成UML插件ModelSpoon
- 关于在虚拟机中无法读取usb设备的一种原因及处理方法
- 【自由谈】城域网IPv6过渡技术——有状态stateful与无状态stateless地址转换
- 内核升级
- 使用openssl中的加密函数AES、RC4、RSA对文件加密的一个例子
- JAVA 对象被垃圾回收后其成员变量可用吗?
- 静态语言和动态语言的比较
- 内核的重要文件
- Servlet常用接口
- 数组比较大小冒泡法(由小到大)
- 交叉编译能在arm平台上运行的Qt应用程序的步骤
- POJ 2485(prim 算法)
- Java基础之面向对象
- MatchDroid--类正则表达式匹配自动机,更好效率与中文支持