转载自: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);

最新文章

  1. C# 复制幻灯片(包括格式、背景、图片等)到同/另一个PPT文档
  2. 三道简单的前端HTML/CSS题目
  3. nginx下搭建 Yii框架
  4. KEngine:Unity3D资源的打包、加载、调试监控
  5. Region Representaion and Description
  6. Ubuntu12.04-x64编译Hadoop2.2.0和安装Hadoop2.2.0集群
  7. C++求斐波那契数
  8. 国产CPU研究单位及现状
  9. stagefright框架(四)-Video Buffer传输流程
  10. oracle 使用技巧
  11. dyld: Symbol not found: _OBJC_CLASS_$_UIBlurEffect
  12. 利用SSH框架开发时遇到的各种Bug及解决方法
  13. ORM对象关系映射之使用GreenDAO进行CRUD操作
  14. gridlayout代码注释
  15. win10系统中如何解决cmd中的路径和现在电脑的用户名不一致
  16. django模型系统一
  17. 6M - 循环多少次?
  18. ASM的一些小坑
  19. [Linux] 设置系统时区
  20. 【Java】自动类型转换规则

热门文章

  1. ZOJ 1015 弦图判定
  2. Linux6.9用RPM方式安装MySQL5.7.21
  3. tortoise git常用功能
  4. NSArray与NSMutableArray 数组与可变数组的创建和遍历 复习
  5. openCV+ASM+LBP+Gabor实现人脸识别(GT人脸库)
  6. 老生常谈javascript的5中继承
  7. Mac OS上的远程桌面
  8. Wix使用整理(一)
  9. 图形图像的绘制 GandyDraw
  10. DELPHI纤程的演示