Java中被你忽视的四种引用(转)
转载自: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中被你忽视的四种引用(转)的更多相关文章
- Java虚拟机15:再谈四种引用状态
JVM的四种引用状态 在Java虚拟机5:Java垃圾回收(GC)机制详解一文中,有简单提到过JVM的四种引用状态,当时只是简单学习,知道有这么一个概念,对四种引用状态理解不深.这两天重看虚拟机这部分 ...
- Java虚拟机19:再谈四种引用状态
JVM的四种引用状态 在Java虚拟机5:Java垃圾回收(GC)机制详解一文中,有简单提到过JVM的四种引用状态,当时只是简单学习,知道有这么一个概念,对四种引用状态理解不深.这两天重看虚拟机这部分 ...
- Java中遍历Map集合的四种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- Java中获取系统时间的四种方式
第一种: Date day=new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" ...
- Java中构建长字符串的四种模式
回字有四种写法,构建字符串也有四种方式. 用+号最快,第二第三种可读性好,第四种是log4j自有的.下面请见代码: package logbackCfg; import java.text.Messa ...
- Java 中转换为String类型的四种方法
1. 使用 String 的构造方法,用于 byte[], char[], StringBuffer, StringBuilder 类型 2. 使用 String 的静态方法 valueOf() 推荐 ...
- Java中四种引用:强、软、弱、虚引用
这篇文章非常棒:http://alinazh.blog.51cto.com/5459270/1276173 Java中四种引用:强.软.弱.虚引用 1.1.强引用当我们使用new 这个关键字创建对象时 ...
- 【转】Java中字符串中子串的查找共有四种方法(indexof())
原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int ...
- Java中字符串中子串的查找共有四种方法(indexof())
Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字 ...
随机推荐
- hdu 3507 斜率优化
我的第一道斜率优化. 就这道题而言,写出原始的方程: dp[i] = min{ dp[j] + (sum[i]-sum[j])2 + M | j in [0,i) } O(n^2)的复杂度肯定超时, ...
- bzoj 1598: [Usaco2008 Mar]牛跑步 -- 第k短路,A*
1598: [Usaco2008 Mar]牛跑步 Time Limit: 10 Sec Memory Limit: 162 MB Description BESSIE准备用从牛棚跑到池塘的方法来锻炼 ...
- trie--- POJ 3764 The xor-longest Path
The xor-longest Path Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5453 Accepted: 1 ...
- [转]Android 中fill_parent与wrap_content的区别
在Android中,对于组件的属性“layout_width”和“layout_height”, 其值总是设置为“wrap_content”或“fill_parent”. 那么,这两个值有什么 ...
- Theme.AppCompat无全屏主题解决办法
V7包中的Theme.AppCompat主题系列中并没有全屏样式,这个是为什么,只有作者知道…… 解决办法: 自定义主题 <style name="Theme.AppCompat.Li ...
- NFC TI TRF7970A Breakout Board for BusPirate or other HW
http://dangerousprototypes.com/forum/viewtopic.php?f=19&t=3187 Just a news about a new Hardware ...
- Java:准备学习的高级主题
ClassLoader GC Concurrent Transaction JTA JPA JDBC JNDI JNI JNA JNative OSGI JMS JSTL EL Servlet NIO ...
- MySQL Cluster(MySQL 集群) 初试
MySQL Cluster 是MySQL适合于分布式计算环境的高实用.高冗余版本.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器.在MyQL 5.0及 ...
- 学习笔记 ST算法
[引子]RMQ (Range Minimum/Maximum Query)问题: 对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值 ...
- [转载][概念]Storage Pool, Private RAID Group, Private LUN
Storage Pool的起源 ========================== Some time ago, EMC introduced the concept of Virtual Prov ...