强软弱虚引用怎样明白

源代码 2024-9-23 13:58:31 103 0 来自 中国

  • 强引用:
    我们平常最常使用的根本对象引用,JVM不会采取强引用范例对象,纵然内存不敷导致OOM也不会采取。
实现一个强引用
User user = new User()

  • 软引用:
    内存空间充足的环境下,JVM不会采取软引用对象,假如内存空间不敷,那么软引用对象会被采取。
    只要JVM没有采取,软引用就可以继续被步伐使用,因此可以用软引用存放一些内存敏感的缓存。只要内存充足,对象就保持永远不被采取。
实现软引用:java.lang.ref.SoftReference
SoftRenference softRenfernce = new SoftRenference(new User());// 获取软引用对象System.out.println(softReference.get())

  • 弱引用:垃圾采取线程只要扫描到弱引用对象,不管内存空间是否充足,都会举行采取。
    弱引用可以用来实现一些规范化映射,如:WeakHashMap,当key大概value不再被引用时可以主动采取。
实现一个弱引用:java.lang.ref.WeakReference
WeakReference  weakReference = new WeakReference(new User());System.out.println(weakReference.get())

  • 虚引用:虚引用不决定对象的生命周期,假如一个对象仅持有虚引用,那么他就和没有任何引用一样,任何时间都可以被JVM采取。
    虚引用紧张用来跟踪对象被垃圾采取器采取的话,虚引用必须和引用队列(ReferenceQuque)团结使用,当垃圾采取器准备采取一个对象时,假如发现他另有虚引用,就会在采取对象的内存之前,把这个虚引用参加到与之前关联的引用队列。
实现一个虚引用:java.lang.ref.ReferenceQueue
// 引用队列ReferenceQueue<User> queue = new ReferenceQueue<> ();// 构建虚引用对象PhantomReference phantomReference = new PhantomReference(new User());// 获取虚引用对象System.out.println(phantomReference .get())ReferenceQueue(引用队列)是必须的,当对象采取时会放入此中,它最大的作用是跟中对象的采取。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 20:31, Processed in 0.156863 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表