Java中的守护程序线程是什么?

java.lang.ref.WeakReference和之间有什么区别java.lang.ref.SoftReference?

高分回答:

很多的知识点,真的需要写出来才会掌握!!! \color{purple}很多的知识点,真的需要写出来才会掌握!!!{~}很多的知识点,真的需要写出来才会掌握!!! 

从Ethan Nicholas的《​​理解弱引用​​》中:

参考文献薄弱

一个弱引用,简单地说,是不是强大到足以迫使对象保留在内存中的参考。弱引用使您可以利用垃圾收集器的能力来确定您的可达性,因此您不必自己做。您创建像这样的弱引用:(没有强引用就直接回收)

WeakReference weakWidget = new WeakReference(widget);
复制代码


然后在代码中的其他地方,您可以weakWidget.get()用来获取实际的Widget对象。当然,弱引用不足以阻止垃圾回收,因此您可能会发现(如果没有对小部件的强引用)weakWidget.get()突然开始返回null。

软引用

甲软引用酷似弱引用,不同之处在于它是更少急于扔掉其所引用的对象。只有弱可达性的对象(对其最强的引用是WeakReferences)将在下一个垃圾回收周期中被丢弃,但是柔弱可达性的对象通常会停留一段时间。

SoftReferences并不需要向任何行为不同于WeakReferences,但在实践中轻轻地可达对象一般保留,只要内存供应充足。这使它们成为缓存(例如上述图像缓存)的良好基础,因为您可以让垃圾回收器担心对象的可访问性(一个高度可访问的对象将永远不会从缓存中删除)需要他们正在消耗的内存。

彼得·凯斯勒(Peter Kessler)在评论中添加:

Sun JRE确实将SoftReference与WeakReferences区别对待。如果可用内存没有压力,我们尝试保留由SoftReference引用的对象。一个细节:“-client”和“ -server” JRE的策略不同:-client JRE倾向于通过清除SoftReferences而不是扩展堆来减小占用的空间,而-server JRE试图保持您的占用空间。通过优先扩展堆(如果可能)而不是清除SoftReferences,可以提高性能。一种尺寸并不适合所有尺寸。

文章翻译自 ​​am2dgbqfb6mk75jcyanzabc67y-ac4c6men2g7xr2a-stackoverflow-com.translate.goog/questions/2…​

作者建议: 我所知道就Threadlocal的key存在弱引用,如果没有强引用就会呗垃圾回收器回收,造成key为空,而value还有数据,因此为了避免内存泄漏,建议及时释放remove

欢迎关注我的专栏StackOverFlow,我会筛选优质的问答,面试常考!!! \color{red}欢迎关注我的专栏StackOverFlow,我会筛选优质的问答,面试常考!!!{~}欢迎关注我的专栏StackOverFlow,我会筛选优质的问答,面试常考!!! 

有最新、优雅的实现方式,我也会在文末写出我对本问答的见解 \color{red}有最新、优雅的实现方式,我也会在文末写出我对本问答的见解{~}有最新、优雅的实现方式,我也会在文末写出我对本问答的见解 

真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话

求点赞???? 求关注❤️ 求分享???? 对8块腹肌的我来说真的 非常有用!!!

如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️