`
fly.net.cn
  • 浏览: 183724 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

解析Java对象引用

    博客分类:
  • Java
阅读更多

Java 对引用的分类

级别

什么时候被垃圾回收

用途

生存时间

从来不会

对象的一般状态

JVM 停止运行时终止

在内存不足时

对象简单?缓存

内存不足时终止

在垃圾回收时

对象缓存

gc 运行后终止

假象

Unknown

Unknown

Unknown

1 、强引用:

public static void main(String[] args) {

        MyDate date = new MyDate();

        System.gc();

}

解释:即使显式调用了垃圾回收,但是用于 date 是强引用, date 没有被回收

2 、软引用:

public static void main(String[] args) {

        SoftReference ref = new SoftReference(new MyDate());

        drainMemory(); // 让软引用工作

}

解释:在内存不足时,软引用被终止,等同于:

MyDate date = new MyDate();

//------------------- JVM 决定运行 -----------------

If(JVM. 内存不足 ()) {

         date = null;

         System.gc();

}

//-------------------------------------------------------------

3 、弱引用:

public static void main(String[] args) {

        WeakReference ref = new WeakReference(new MyDate());

        System.gc(); // 让弱引用工作

}

解释:在 JVM 垃圾回收运行时,弱引用被终止,等同于:

MyDate date = new MyDate();

//------------------ 垃圾回收运行 ------------------

public void WeakSystem.gc() {

         date = null;

         System.gc();

}

4 、假象引用:

public static void main(String[] args) {

        ReferenceQueue queue = new ReferenceQueue();

        PhantomReference ref = new PhantomReference(new MyDate(), queue);

        System.gc(); // 让假象引用工作

}

解释:假象引用,在实例化后,就被终止了,等同于:

MyDate date = new MyDate();

date = null;

//------- 终止点,在实例化后,不是在 gc 时,也不是在内存不足时 --------

 

分享到:
评论

相关推荐

    java对象引用易混解析

    java 关于引用容易混淆,本文档对此进行整理 对java对象引用易混解析 举例解释

    JAVA对象转换成XML(CDATA)

    CDATA:在标记CDATA下,所有的标记、实体引用都被忽略,而被XML处理程序一视同仁地当作字符数据看待,CDATA的形式:<![CDATA[文本内容]]>CDATA的文本内容中不能出现字符串“]]>”,另外,CDATA不能嵌套。

    全面解析Java中的引用类型

    在Java中对象以引用来指向JVM的内存区块,这里我们总结了强引用、软引用、弱引用和假象引用(幽灵引用),下面就具体来全面解析Java中的引用类型:

    解析Java的JNI编程中的对象引用与内存泄漏问题

    主要介绍了Java的JNI编程中的对象引用与内存泄漏问题,重点讲述了局部和全局引用时一些值得注意的地方,需要的朋友可以参考下

    深入解析Java编程中的boolean对象的运用

    主要介绍了Java编程中的boolean对象的运用,是Java入门学习中的基础知识,需要的朋友可以参考下

    java深入解析

    103 话题18 一成不变——不可修改的String对象 107 话题19 钩深索隐——String字符最大长度的探索 111 话题20 追本溯源——追寻String字面常量的“极限” 116 话题21 旧调重弹——再论equals方法与“==”的 区别 ...

    Java面试八股文解析.pptx.pptx

    Java是一种面向对象的编程语言,具有跨平台、安全性高、易于维护等特点,广泛应用于企业级应用开发。 Java数据类型 Java拥有8种基本数据类型,包括整型、浮点型、字符型等,以及引用数据类型如数组和类,为编程提供...

    java源码包---java 源码 大量 实例

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA_API1.6文档(中文)

    java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度...

    [尚硅谷]_宋红康_深度解析Java内存原型

    栈: 存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在 堆中。 堆:存放用 new 产生的数据。 静态域:存放在对象中用 static 定义的静态成员。 常量池:存放常量。 非 RAM 存储:硬盘等永久存储...

    usejson:适用于Java的JSON5和JSON解析器。 在标准“地图”和“列表”中创建数据树; 用于直接读取或包装在org.json对象中

    一个Java库,它将JSON5或JSON格式解析为Java对象的普通树(使用Map<>作为字典,而使用List<>作为数组)。 它在JitPack上直播。 在线演示; 它显示了用于将JSON5对象转换为纯JSON的库。 解析器是从参考...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    java 读取csv 并转为Map<String,Object>

    通过引用【opevcsv】依赖,逐行读取数据 并转为Map,Object&gt;格式,后续可以通过BeanUtil.MaptoBean()方法将map转为你需要的bean对象; csv文件必须带表头,bean对象命名符合驼峰格式; 通过此方法可以快速的将文件...

    Java开发技术大全(500个源代码).

    notInPack.java 用前缀引用包中的类 onlyShow.java 一个简单的接口 Outer_1.java 外部类示例1 Outer_2.java 外部类示例2 Outer_3.java 外部类示例3 Outer_4.java 外部类示例4 Outer_5.java 外部类示例5 ...

    java源码包4

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    java源码包3

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    Java 1.6 API 中文 New

    java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    9.11.1 引用对象 9.11.2 可触及性状态的变化 9.11.3 缓存、规范映射和临终清理 9.12 一个模拟:“heap of fish” 9.12.1 分配鱼 9.12.2 设置引用 9.12.3 垃圾收集 9.12.4 压缩堆 9.13 随书...

Global site tag (gtag.js) - Google Analytics