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 //访问数据正常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

陶哲轩的10岁与30岁

Terence Tao(陶哲轩),1975年7月17日出生于澳大利亚Adelaide(阿德莱德)。本讲话作于1985年上半年,即陶哲轩尚未满10周岁时所作,一个稚气儿童,给大学生和教授们作报告,少见…

NET问答: 重写了 Equals,还有必要重写 GetHashCode 吗?

咨询区 David Basarab:直入主题,参考如下代码:public class Foo {public int FooId { get; set; }public string FooName { get; set; }public override bool Equals(object obj){Foo fooItem obj as Foo;if (fooItem null) {return false;…

【转载】DataKeyNames,DataKeys 用法浅谈

原文地址:http://www.cnblogs.com/amos/archive/2010/07/16/1778796.htmlDataKeyNames作为GridView中的一个属性,我们可以利用这个属性结合DataKeys方便的访问GridView中每个字段的值。先说怎么用DataKeyNames可以直接在GridView属性中设置,多…

如果编程替换成中文就会怎样? 程序员看了表示头疼

首先大概的看一下中文编码:你以为会写中文就会编程吗?这就像你以为会写汉字就会写出好文章一样。编程是和机器沟通,因此要用机器的语言而不是人类的语言。最早的程序就是0和1的数字,不是中文也不是英文。以前的程序员,…

java new 面试_java面试30问

第一,谈谈final, finally, finalize的区别。第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?第三,Static Nested Class 和 Inner Class的不同,说得越…

使用visio 2016 绘制画UML时序图(Sequence Diagram)

什么是时序图?时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。让我们来看一看Visio2016对时序图的的解释。时序图的元素我们在画时序图时会涉及到7种元素&…

网页颜色搭配

兼职请上猪八戒网站转载于:https://blog.51cto.com/ayyzddq/598474

数字化诗人:这可能是第一位用算法写诗的诺贝尔文学奖得主

一位英国教授发现,一些优秀的诗人早在20世纪60年代就开始使用编码算法来写诗了。著名作家J.M.Coetzee,在早期的英国超级计算机上开发了创作诗歌的软件当我们回顾历史上探索科技应用的人才时,通常不会想到英语教授。但是伦敦国王学院现代文学博…

在asp.net core中使用的验证框架FluentValidation

FluentValidation在asp.net core中怎么使用?先安装包。Install-Package FluentValidation.AspNetCore和上一篇的实体类和验证类一样。实体类:public class Person {public int Id { get; set; }public string Name { get; set; }public string Tel { get…

【EFCORE笔记】异步查询工作原理注释标记

异步查询 当在远程数据库中执行查询时,同步查询可能会阻止当前线程,异步查询可避免阻止线程,这有助于避免冻结户端界面, 异步操作还可以增加 Web 应用程序的吞吐量,可以在数据库操作完成前释放线程去处理其他请求。EF …

java 进程同步代码_java 实现进程间的同步(源代码)

操作系统课程设计:实现进程间的同步。 有问题留言import java.util.concurrent.Semaphore; /******** 信号量 *******/ class Sign { final static int NUMS 6; // 进程的数目 final static int RUN 1; // 运行完 final static int STOP 0; // 阻塞态 static int…

CSS日常公用样式与一些解决方案

一、自己总结的公用样式解析html, body, div, p, ul, li, dl, dt, dd, h1, h2, h3, h4, h5, h6, form, input, select, button, textarea, iframe, table, th, td { margin: 0; padding: 0; }img { border: 0 none; vertical-align: top; }ul, li { list-style-type: none; }h1…

上班族吐槽大集合:那些发生在公司的傻X奇遇

“明明不需要加班,到了点却偏偏没人起身走。”—— 小爱“头脑风暴,人越多效率越低下,最后风暴出来的东西也很难落实。”—— 好奇心“只是申请个办公用品,需要人事处签字,行政部签字,总监签字,…

C# 9 record 并非简单属性 POCO 的语法糖

最近升级专案到大统一 .NET 5 并使用 C#9 语法尝试改写套件,发现之前以为 record 只是简单属性 POCO 的简化语法糖的认知是错误。另外因为 POCO 属于需定义口语词,这边在本文定义简单属性 POCO 为 public class 类别 {public string ID{get;set}/*略*/} 只有属性的简…

java中注解的解析_全面解析Java中的注解与注释

注解一、什么是 Annotation? (注解 or 注释)Annotation, 准确的翻译应该是 -- 注解。 和注释的作用完全不一样。Annotation 是JDK5.0及以后版本引入的一个特性。 与类、接口、枚举是在同一个层次,可以成为java 的一个类型。语法是以 开头简单来说&#x…

安装配置Mysql主从

环境: 主从服务器上的MySQL数据库版本同为5.1.34 主机IP:192.168.0.1 从机IP:192.168.0.2 一. MySQL主服务器配置 1.编辑配置文件/etc/my.cnf # 确保有如下行 server-id 1 log-binmysql-bin binlog-do-dbmysql #需要备份的数据库名&#xf…

玩的时候好好玩,学的时候好好学。不做半吊子

要用大块的时间学习,玩的时间也不能短。比如:一周七天六天认认真真学习,不要某天下午一犹豫懒惰就不去实验室了,没有任何目的度过了无聊的下午。同时又没有玩的计划所以,玩的也不开心。 现在要做到的就是正常的计划不要…

java实现思维导图_Java并发(思维导图)

1,线程状态转换无限期等待:限期等待:线程生命流程:2,实现方式代码实现样例【三种方式】:packagecom.cnblogs.mufasa.demo2;importjava.util.concurrent.Callable;public class test1_Runnable implementsRu…

这本免费小书,带你征服 GitHub!

GitHub 漫游指南,一本有趣又通俗的 GitHub 教程,想要成为 star 之王么?今天给大家分享一份通俗易懂的 GitHub 学习教程,即《GitHub 漫游指南》。看过了不下十套 GitHub 教程了,小编愿称它为最强!虽然没有 G…

jQuery formValidator表单验证插件4.1.0 下载 演示 文档 可换肤 代码生成器

更新记录: 2011/6/5 jQuery formValidator 4.1.0 ver申明:1、所有DEMO引用jQuery类库的时候,类库后面直接跟了版本号——表示插件支持的最高类库版本号2、插件的命名:插件名版本号,压缩版:插件名版本号min新增以下功能…