Java基础-----Java引用

原创 2015年07月07日 19:29:59


引用的分类:

   -强引用:StrongReference:引用指向对象,gc运行时不回收

   -软引用:SoftReference gc运行时可能会回收(jvm内存不够的时候)

   -弱引用:WeakReference gc运行时立即回收

   -虚引用:PhantomReference 类似于无引用,主要跟踪对象被回收的状态,不能单独引用,必须与引用队列联合使用

目的避免对象长时间驻留内存,解决垃圾回收机制回收时的时机问题

我们通过示例代码来演示一下弱引用WeakReference

首先来看一个特殊的例子String 类型的直接量 因为String类型的直接量存在于字符串常量池中,所以不能被回收示例代码

  public static void main(String[] args) {
       //字符串常量池 共享(不能回收)
        String str = "hello";
        //弱引用管理对象
        WeakReference<String> wr = new WeakReference<String>(str);
        System.out.println("Gc运行前" + wr.get());
        //断开引用
        str = null;
        //通知回收
        System.gc();
        System.runFinalization();
        System.out.println("Gc运行后" + wr.get());
    }

运行结果:

Gc运行前hello
Gc运行后hello

通过new String()来创建对象

 public static void main(String[] args) {
       //字符串常量池共享(不能回收)
        String str =new String("hello");
        //弱引用管理对象
        WeakReference<String> wr = new WeakReference<String>(str);
        System.out.println("Gc运行前" + wr.get());
        //断开引用
        str = null;
        //通知回收
        System.gc();
        System.runFinalization();
        System.out.println("Gc运行后" + wr.get());
    }


运行结果:

Gc运行前hello
Gc运行后null


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

java基础之对象与引用

我们都知道,java是一门面向对象的语言,了解C++的人能,对zhiz

java基础入门-父类引用子类对象

java基础入门 先贴上代码 package com.ray.object; /** * 父类引用子类对象 * * @author ray * @since 2015-04-30 *...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Java基础学习笔记:(八)引用传递

八.引用传递8.1 引用传递分析  引用传递是java的精髓所在,它的核心意义是:同一块堆内存空间可以被不同的栈内存指向,不同栈内存可以对同一堆内存进行内容修改。  (1)对象与方法参数的引用传递。程...

java基础入门-父类引用子类对象(2)-抽象类

抽象类:具有抽象方法的类,需要使用abstract关键字修饰   关系图       下面上代码   package com.ray.testobject; /** * 抽象类 * * @a...

Java学习之旅基础知识篇:数组及引用类型内存分配

转自: http://www.cnblogs.com/hmiinyu/archive/2012/10/22/2732781.html       在上一篇中,我们已经了解了数组,...

【Dongle】【Java】基础(五)之包及引用

java创建包和包引用。

Java基础总结(二)基本数据类型的引用

引用在基本数据类型与其对应的包装类应用与分析

java基础——对象引用

一、概念理解: 我们经常这样理解,变量就像是杯子,是一种容器,承装某些事物,在java中基本数据类型可以这样理解,那对象是怎么处理的呢?如下示例,“myDog”是对象变量么? Dog myDog ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)