Java数据类型

基本数据类型

|
|--整型   : byte,short,int,long
|--浮点型 : float,double
|--布尔型 : boolean
|--char: char

引用类型

|--强引用(Strong  Reference) //Java中默认声明的就是强引用,比如:Object obj = new Object();
|
|--软引用(Soft    Reference)|---常被用来实现缓存技术,比如网页缓存,图片缓存等;
|                           |---用java.lang.ref.SoftReference 类来装饰;
|                           |---:byte[] buff = new byte[1024 * 1024];
|                           |      SoftReference<byte[]> sr = new SoftReference<>(buff);  
|                           |      即使有 byte[] buff 引用指向对象, 且 buff 是一个strong reference, 但是 SoftReference sr 指向的对象仍然被回收了,
|                           | 	 这是因为Java的编译器发现了在之后的代码中, buff 已经没有被使用了, 所以自动进行了优化.
|                           | 	 
|                           |---在内存足够的时候,软引用对象不会被回收,只有在内存不足时,系统则会回收软引用对象
|                           |
|                           
|--弱引用(Weak    Reference)|--只要 JVM 开始进行垃圾回收,那些被弱引用关联的对象都会被回收
|                           |--用 java.lang.ref.WeakReference  类来装饰;
|                           |--: byte[] buff = new byte[1024 * 1024];
|                           |      WeakReference<byte[]> sr = new WeakReference<>(buff);
|
|--虚引用(Phantom Reference)|--用 java.lang.ref.PhantomReference 类来装饰;
|                           |--这个类的源码,只有一个构造函数和一个 get() 方法,而且它的 get() 方法仅仅是返回一个null,
|                           |--永远无法通过虚引用来获取对象,虚引用必须要和 ReferenceQueue 引用队列一起使用。
|                           |
|                           |--public class PhantomReference<T> extends Reference<T> {
|                           |--    public T get() {
|                           |--        return null;
|                           |--    }
|                           |--    public PhantomReference(T referent, ReferenceQueue<? super T> q) {
|                           |--        super(referent, q);
|                           |--    }
|                           |--}
|                           |--
|                           |--引用队列可以与软引用、弱引用以及虚引用一起配合使用,
|                           |--当垃圾回收器准备回收一个对象时,如果发现它还有引用,那么就会在回收对象之前,把这个引用加入到与之关联的引用队列中去。
|                           |--程序可以通过判断引用队列中是否已经加入了引用,来判断被引用的对象是否将要被垃圾回收,这样就可以在对象被回收之前采取一些必要的措施。
|                           |--与软引用、弱引用不同,虚引用必须和引用队列一起使用。

你可能感兴趣的:(后端开发)