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中基本类型与引用类型的区别

基本类型:存放在栈空间中,未初始化时为随机值。 引用类型:存放在堆空间中,未初始化时有默认的值。比如int未初始化时为0,boolean未初始化时为false。 这里在引用java中栈与堆的介绍。...
  • u010281862
  • u010281862
  • 2013年12月08日 12:35
  • 1915

Java基本类型变量与引用类型变量

Java基本类型变量与引用类型变量  (2013-04-08 20:47:54) 转载▼ 标签:  java   设计模式   java设计模式 ...
  • h183288132
  • h183288132
  • 2015年04月22日 17:13
  • 1401

JAVA基础 引用类型变量和基本类型变量

一     基本类型的变量名是变量本身。   包括八种基本数据类型 引用类型变量的名字是复杂数据的存储地点。包括类   数组(字符串)   接口 String s="Hello world!...
  • qq_35809245
  • qq_35809245
  • 2016年08月16日 22:32
  • 1237

Java基础复习笔记02对象状态、引用种类、垃圾回收形式

  • 2013年04月24日 22:53
  • 55KB
  • 下载

JAVA【第5章:面向对象基础】_引用传递及其应用.rar

  • 2015年07月23日 20:24
  • 18.04MB
  • 下载

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

java基础入门 先贴上代码 package com.ray.object; /** * 父类引用子类对象 * * @author ray * @since 2015-04-30 *...
  • raylee2007
  • raylee2007
  • 2015年04月30日 10:08
  • 1387

Java基础复习笔记 对象状态、引用种类、垃圾回收形式02

1.       有些情况下Java的内存回收是一个比较敏感的问题,就是说在一个运行时服务对内存十分严格、苛刻的服务器环境下,要求运行在虚拟机上的程序几乎占用内存十分的少。当然在垃圾回收这个优先级比较...
  • hashsound_Wang
  • hashsound_Wang
  • 2012年10月30日 22:22
  • 1563

Java基础11 对象引用

 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!   我们之前一直在使用“对象”这个概念,但没有探讨对象在内存中的具体存...
  • lxb00321
  • lxb00321
  • 2016年11月14日 17:28
  • 136

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

抽象类:具有抽象方法的类,需要使用abstract关键字修饰   关系图       下面上代码   package com.ray.testobject; /** * 抽象类 * * @a...
  • raylee2007
  • raylee2007
  • 2015年05月02日 21:04
  • 2303

Java基础之堆和栈、引用值

博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !           人所共知,equals与==之间是有差...
  • liuxian13183
  • liuxian13183
  • 2012年08月06日 09:55
  • 1454
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java基础-----Java引用
举报原因:
原因补充:

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