java的四种引用类型


java有四种引用类型

  1. StrongReference 强引用,最普通的引用,虚拟机即使抛出OOM也不会回收此类引用的对象
  2. SoftReference 软引用,虚拟机只在OOM前会回收此类引用(虚拟机在GC后发现内存空间仍然不足时,会回收软引用的对象)
  3. WeakReference 弱引用,虚拟机在GC时会回收此类引用
  4. PhantomReference 虚引用,仅用来处理资源清理问题,比finalize灵活

总结一下

引用类型 目的 应用 GC时机 实现类
强引用 普通引用类型 普通引用类型 永远不会被GC
软引用 只要内存充足,对象就不会被回收 内存敏感的缓存,可以一直填充对象而不会OOM的Map OOM前进行回收 SoftReference
弱引用 不再使用时被GC回收 容器认为对象无用时,取消强引用,自动被GC回收 GC时 WeakReference,WeakHashMap
虚引用 处理资源清理问题,比finalize灵活 finalize函数的替代或增强 GC时 PhantomReference

你可能感兴趣的:(java的四种引用类型)