zoukankan      html  css  js  c++  java
  • 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);  
  • 相关阅读:
    spoj 7001 Visible Lattice Points莫比乌斯反演
    codeforces 446C DZY Loves Fibonacci Numbers 数论+线段树成段更新
    fzu 1753 质因数的应用
    hud 4746 莫比乌斯反演
    hdu 1695 容斥原理或莫比乌斯反演
    hdu 4741 Save Labman No.004异面直线间的距离既构成最小距离的两个端点
    codeforces练习
    年底Android面试整理(附答案)
    最近Android真的凉凉了?
    Android 应用防止被二次打包指南
  • 原文地址:https://www.cnblogs.com/alsf/p/8568479.html
Copyright © 2011-2022 走看看