java成员变量垃圾回收_JAVA 对象被垃圾回收后其成员变量可用吗? | 学步园
我们知道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;
}
@Override
protected void finalize() throws Throwable {
System.out.println("Buffer gone away!");
}
}
class HandleBuffer{
byte[] buf = null;
public HandleBuffer(byte[] buf){
this.buf = buf;
}
@Override
public 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对象的生命周期与垃圾回收以及四种引用
创建对象的方式用new语句创建对象. 使用反射,调用java.lang.Class或java.lang.reflect.Constructor的newInstance()实例方法. 调用对象的clon ...
- java String如何回收_java中的垃圾回收
原文-http://blog.csdn.net/zsuguangh/article/details/6429592 1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确 ...
- java 手动垃圾回收_java如何进行垃圾回收的
转:http://blog.csdn.net/yakihappy/article/details/3979944 垃圾收集的目的在于清除不再使用的对象.gc通过确定对象是否被活动对象引用来确定是否收集 ...
- java创建变量的过程_java 对象的创建过程
初始化的顺序首先是static(如果它们尚未由前一次对象创建初始化,也就是new对象的时候,只执行一次static变量初始化),变量初始化顺序有变量在类的定义顺序决定的: 对象的创建过程,以Dog类为 ...
- java 全局变量 内存不回收_Java的内存 - 内存回收
这篇承接上一篇 <Java的内存 - 内存模型>,分析内存回收相关的知识点. 垃圾回收包含两个步骤,①标记哪些内存是垃圾 ②回收内存.下面分别说这两个步骤有哪些算法: 1. 垃圾标记 1. ...
- java 对象引用 弱引用吗_Java对象的强引用、软引用、弱引用和虚引用 笔记
从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用. 1.强引用 使用最普遍的引用.如果一个对象具有强 ...
- java中何时不能实例_Java对象实例是何时被创建
您可能感兴趣的话题: Java 核心提示:对象实例何时被创建,这个问题也许你用一句话就能回答完了.但是它的潜在陷阱却常常被人忽视,这个问题也许并不像你想的那么简单,不信请你耐心看下去. 对象实例何时被 ...
- java的头怎么写_JAVA对象布局之对象头(Object Header)
由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象功能 .在学习并发编程知识synchronized时,我们总是难以理解其实 ...
- c++变量重新赋值_Java基础二:一文讲透变量与数据类型
学透Java中的变量与基本数据类型,看这篇就够了.变量 什么是变量: java是强类型语言,所有的变量都必须先声明才能使用,声明变量时必须指定变量存储信息的类型.变量的声明一般使用名值对的方式,包含变 ...
最新文章
- 途游斗地主加密协议分析及破解
- 继承ViewGroup类
- SANS:2014年安全分析与安全智能调研报告
- ] 解决myeclipse中新建javaweb工程,无法使用Web App Libraries问题
- Java –远景JDK 8
- java select下拉标签_java中下拉框select和单选按钮的回显操作
- python 示例_带有示例的Python列表remove()方法
- nuxt webpack配置css,vuecli或nuxt用Webpack的优雅ProgressBar(webpackBar)
- 高清壁纸:60款可爱的圣诞节电脑桌面壁纸《中篇》
- 解决为什么已经设置了request.setCharacterEncoding(“utf-8“);POST请求仍然乱码的问题
- JavaScript 插件的书页翻转效果
- 交换机千兆和百兆对网速影响_电信宽带升级为200M,为什么网速没有提升多少?...
- 云智能资深专家崮德:谈谈我对华为HarmonyOS 2.0的看法
- 详解Java中的Base64原理跟用法
- 前端UI框架网址大全----后续会有添加
- matlab画三维图像(plot3,mesh,surf)
- 使用活字格制作企业办公用品管理软件
- Python 根据excel内容批量生成二维码
- 英语词根词缀记忆法(全集)_你竟然还在用词根词缀背单词?智橡树英语教你音标和音节秒记法...
- 云产品学习之路(阿里云01)阿里云rds数据库导出
热门文章
- qMISPlat入门级使用问题解答一
- asp.net core源码飘香:Options组件
- [转]C++二进制完成加减乘除
- 一键将Python2代码自动转化为Python3
- C语言试题四十四之移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。
- Android之华为平板打日志提示Permission denied
- Android之万能适配器Adapter的使用
- 《iVX 高仿美团APP制作移动端完整项目》03 推介信息及推荐商家分析及制作
- python语法详解_解析 Python3 基础语法
- php 实现自动加载更多,$.ajax+php实战教程之下拉时自动加载更多文章原理分析二...