java中4种引用
强引用:
强引用是默认支持,当内存不足的时候,JVM开始垃圾回收,对于强引用的对象,
就算是出现了OOM也不会回收对象。
软引用
一种相对强引用弱化了一些的引用,用java.lang.ref.SoftReference实现,
可以让对象豁免一些垃圾收集。当系统内存充足的时候,不会被回收;
当系统内存不足的时候,会被回收
弱引用
弱引用需要用java.lang.ref.WeakReference实现,它比软引用的生存期更短,
对于弱引用的对象来说,
只要垃圾回收机制一运行,不管JVM的内存空间是否够,
都会回收该对象的占用内存。
虚引用
虚引用要通过java.lang.ref.PhantomReference类来实现,
虚引用不会决定对象的生命周期,如果一个对象只有虚引用,就相当于没有引用,
在任何时候都可能会被垃圾回收器回收。它不能单独使用也不能访问对象,
虚引用必须和引用队列联合使用。
引用类关系
expungeStaleEntries entry 对象回收方法
1 | ini复制代码private void expungeStaleEntries() |
get 方法
1 | ini复制代码public V get(Object key) |
maskNull 判断key 是否是Null
1 | vbnet复制代码private static Object maskNull(Object key) |
hash 散列函数
1 | scss复制代码final int hash(Object k) { |
getTable 获取数组 Entry<key,value> 数组
1 | scss复制代码private Entry<K,V>[] getTable() { |
indexFor 获取存放数组的位置
1 | arduino复制代码private static int indexFor(int h, int length) |
put key-value
1 | ini复制代码public V put(K key, V value) |
Entry
1 | ini复制代码Entry(Object key, V value, |
本文转载自: 掘金