转载自:http://blog.csdn.net/u010425776/article/details/50760053

Java的数据类型分为两类:基本数据类型、引用数据类型。

基本数据类型的值存储在栈内存中,而引用数据类型需要开辟两块存储空间,一块在堆内存中,用于存储该类型的对象;另一块在栈内存中,用于存储堆内存中该对象的引用

其中引用类型变量分为四类:

1)强引用

最常用的引用形式。把一个对象赋给一个引用类型变量,则为强引用。

只要一个引用是强引用,则垃圾回收器永远都无法回收这个对象的内存空间,除非JVM终止

如:

Object obj=new Object();

2)软引用

当内存资源充足的时候,垃圾回收器不会回收软引用对应的对象的内存空间;但当内存资源紧张时,软引用所对应的对象就会被垃圾回收器回收

创建一个Person类型的软引用
SoftReference<Person> sr = new SoftReference<Person>(new Person());

3)弱引用

不管JVM内存资源是否紧张,只要垃圾回收器运行,弱引用所对应的对象就会被释放

4)虚引用

虚引用等于没有引用,无法通过虚引用访问其对应的对象。

软引用和弱引用在其对象被回收之后,这些引用会被添加到引用队列中去;而虚引用在其对象被回收之前,虚引用就被添加到引用队列中去了。因此虚引用可以在其对象被释放之前进行一些操作。

虚引用和引用队列绑定的方法:

//创建引用队列
ReferenceQueue<String> queue = new ReferenceQueue<String>();
//创建虚引用,并绑定引用队列
PhantomReference<String> str = new PhantomReference<String>("啦啦啦",queue);

Java中被你忽视的四种引用(转)的更多相关文章

  1. Java虚拟机15:再谈四种引用状态

    JVM的四种引用状态 在Java虚拟机5:Java垃圾回收(GC)机制详解一文中,有简单提到过JVM的四种引用状态,当时只是简单学习,知道有这么一个概念,对四种引用状态理解不深.这两天重看虚拟机这部分 ...

  2. Java虚拟机19:再谈四种引用状态

    JVM的四种引用状态 在Java虚拟机5:Java垃圾回收(GC)机制详解一文中,有简单提到过JVM的四种引用状态,当时只是简单学习,知道有这么一个概念,对四种引用状态理解不深.这两天重看虚拟机这部分 ...

  3. Java中遍历Map集合的四种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  4. Java中获取系统时间的四种方式

    第一种: Date day=new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" ...

  5. Java中构建长字符串的四种模式

    回字有四种写法,构建字符串也有四种方式. 用+号最快,第二第三种可读性好,第四种是log4j自有的.下面请见代码: package logbackCfg; import java.text.Messa ...

  6. Java 中转换为String类型的四种方法

    1. 使用 String 的构造方法,用于 byte[], char[], StringBuffer, StringBuilder 类型 2. 使用 String 的静态方法 valueOf() 推荐 ...

  7. Java中四种引用:强、软、弱、虚引用

    这篇文章非常棒:http://alinazh.blog.51cto.com/5459270/1276173 Java中四种引用:强.软.弱.虚引用 1.1.强引用当我们使用new 这个关键字创建对象时 ...

  8. 【转】Java中字符串中子串的查找共有四种方法(indexof())

    原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int ...

  9. Java中字符串中子串的查找共有四种方法(indexof())

    Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字 ...

随机推荐

  1. Android消息机制——Handler

      /**android的消息处理有三个核心类:Looper,Handler和Message.其实还有一个MessageQueue(消息队列), * 但是MessageQueue被封装到Looper里 ...

  2. mongoDB系列之(一):10分钟玩转mongoDB

    1. mongoDB是什麽 mongodb是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式. 存储在集合中的文档,被存储为键-值对的形式.键用于唯一标识一个文档,为 ...

  3. 模板引擎之hogan.js

    hogan.js 语法简单,且支持循环数据: 基本语法: 1. 标签可以嵌套使用 2. {{data}} 转义的变量,不会渲染html标签 3. {{{data}}} 不转义的变量,会渲染html标签 ...

  4. Chrome无法播放m3u8格式的直播视频流的问题解决

    出国,然后安装这个插件即可:Native HLS Playback https://chrome.google.com/webstore/detail/native-hls-playback/emnp ...

  5. FreeRTOS Customisation -- FreeRTOSConfig.h

    http://www.freertos.org/a00110.html FreeRTOS is customised using a configuration file called FreeRTO ...

  6. Spring依赖检查

    在Spring中,可以使用依赖检查功能,以确保所要求的属性可设置或者注入. 依赖检查模式 4个依赖检查支持的模式: none – 没有依赖检查,这是默认的模式. simple – 如果基本类型(int ...

  7. 【ASP】Window2008站点安全设置,IIS7/IIS7.5中目录执行权限的设置方法

    最近帮一个朋友管理Window 2008服务器,发现有个站点是用asp写的,更可怕的是还有传说中的“上传漏洞”,在上传文件夹中有好多的可执行的asp.php文件,算是shell后门脚本吧.怎么处理这个 ...

  8. Html基础知识详解

    一定要做的符合客户要求,不是自己认为对的. 一.基础标签 1.1 大小颜色位置 <!DOCTYPE HTML> <html> <head> <meta htt ...

  9. 工作流引擎activiti入门

    眼下最新的版本号是5.17 1.下载:activiti-5.17.0.zip http://activiti.org/download.html 2.解压activiti-5.17.0.zip 3.打 ...

  10. 判断openfire用户的状态

    /** * 判断openfire用户的状态 * 说明 :必须要 openfire加载 presence 插件,同时设置任何人都可以访问 * /status?jid=user1@my.openfire. ...