soft-references相关内容

如何在 Java 中清除软引用?

我有一个缓存,其中包含对缓存对象的软引用.我正在尝试为使用缓存的类的行为编写功能测试,专门用于清除缓存对象时发生的情况. 问题是:我似乎无法可靠地清除软引用.简单地用完一堆内存并不能解决问题:在清除任何软引用之前,我得到了 OutOfMemory. 有什么方法可以让 Java 更积极地清理软引用? 找到 这里: “虽然可以保证所有SoftReferences 将在之前被清除 ..
发布时间:2022-01-16 10:20:52 Java开发

SoftReference 过早地收集垃圾

我正在为我的 Android 应用程序实现缓存机制. 我使用 SoftReference,就像我找到的许多示例一样.问题是,当我在 ListView 中向上或向下滚动时,大部分 图像已被清除.我可以在 LogCat 中看到每次应用程序加载新图像时都会对我的应用程序进行垃圾收集.这意味着 ListView 中大部分 的不可见图像都消失了. 所以,每次我回滚到较早的位置(我之前真正下载过图 ..
发布时间:2022-01-16 10:01:14 Java开发

Android:位图、软引用和 OOM?

我在垂直 LinearLayout 中有一系列视图.当滚动到时,每个视图都会生成并绘制一个位图.出于性能原因,我宁愿不在每次调用 onDraw() 时都生成位图,但出于内存原因,我不能保留对位图的硬引用.我可以使用有关我应该采取的策略的建议. 我已经尝试了明显的路线:生成位图,然后用 SoftReference 包装它.这失败有两个原因.1. 参考资料的收集速度比我预期的要快得多.2. 我还 ..

了解 Java 的引用类:SoftReference、WeakReference 和 PhantomReference

有人可以解释三个参考类之间的区别吗(或发布一个很好解释的链接)?SoftReference > WeakReference > PhantomReference,但是我什么时候使用每一个?为什么有 WeakHashMap 而没有 SoftHashMap 或 PhantomHashMap? 如果我使用以下代码... WeakReferenceref = new WeakReference(" ..

Java:强/软/弱/幻象参考之间的区别

我已阅读 这篇文章介绍了Java中不同类型的引用(强、软、弱、幻影),但我不是很懂. 这些引用类型之间有什么区别,每种类型将在什么时候使用? 解决方案 Java 提供了两种不同类型/类的引用对象:strong 和 weak强>.弱引用对象可以进一步分为soft和phantom. 强大 弱 软 幻影 让我们一点一点. 强参考对象 StringBuilder b ..

使用 Java 的 ReferenceQueue

SoftReference 和 WeakReference 真的只在作为实例变量创建时有用吗?在方法范围内使用它们有什么好处吗? 另一大部分是ReferenceQueue.Reference.enqueue() 除了能够跟踪哪些引用被确定为垃圾之外,还可以用来强制注册一个对象进行垃圾回收吗? 例如,创建一个在对象中占用大量内存资源(由强引用持有)并创建引用以将它们排入队列的方法是否值得 ..

如何让java系统释放软引用?

我将使用基于 SoftReference 的缓存(这本身就是一件非常简单的事情).但是,我在为它编写测试时遇到了一个问题. 测试的目的是检查缓存是否确实在内存清理发生后再次从服务器请求先前缓存的对象. 这里我发现了如何让系统释放软引用对象的问题.调用 System.gc() 是不够的,因为软引用在内存不足之前不会被释放.我正在 PC 上运行此单元测试,因此 VM 的内存预算可能非常大. ..
发布时间:2021-12-20 11:23:52 Java开发

Java 中的 SoftReference 和 WeakReference 有什么区别?

java.lang.ref.WeakReference 和 java.lang.ref.SoftReference ? 解决方案 来自 了解弱引用,作者 Ethan Nicholas: 弱引用 弱引用,简单地说,是一个引用不够强强制对象保留在内存中.弱引用允许您利用垃圾收集器的能力确定您的可达性,因此您不必自己做.你创建一个像这样的弱引用: WeakReferenceweak ..
发布时间:2021-11-25 14:31:44 Java开发

Soft/Weak/PhantomReferences的原理是清除对引用对象的引用,而引用对象已引用了跟踪的对象

Weak -和 到那时,它将自动清除对该对象的所有幻像引用以及对任何可从该对象到达的任何其他幻像可访问对象的幻像引用. 让我感到困惑的部分是关于其他幻影可到达的对象. 如果我正确理解,则说明此情况: 对象: A B 参考文献: ->:强引用 -P->:幻影参考 -> A -P-> B -> A 因此由于某种原因,垃圾收集器尚未确定B仅是幻像可到达的. ..
发布时间:2020-07-25 02:48:58 Java开发

什么是柔软可触及的物体?

我正在尝试通过这篇"Java中的软引用"文章来研究软引用的含义: https://www.baeldung.com/java-soft-references 理解本文的问题是它通过术语“软可访问对象"定义了“软引用",但我不知道“软可访问对象"是什么意思. 也就是说,堆中的一个对象或者有对它的引用,对吗? 引用要么指向有效对象,要么为空,对吧? 什么时候对象可以"软可 ..
发布时间:2020-07-25 02:48:54 Java开发

可以“软引用"存在于Python中吗?

在其他语言(例如Java)中,对象引用可以是“强",“弱",“软"或“幻影"(在Python中,默认情况下引用是“强"引用,而WeakRef模块则允许使用弱引用. 在Python中是否可以使用“软引用"? 在我的特殊情况下,我有一个创建对象的缓存,这些对象很耗时.有时可能没有对缓存对象的引用,但是如果不需要(即如果有足够的内存),我不想扔掉缓存的对象. 解决方案 除了硬(又称“ ..
发布时间:2020-07-25 02:48:49 Python

.NET为什么不像Java一样具有SoftReference和WeakReference?

我真的很喜欢WeakReference的.但是,我希望有一种方法可以告诉CLR您认为参考有多弱(例如,以1到5的等级).那太好了. Java具有SoftReference,WeakReference,并且我相信它也是第三种类型,称为“幻像引用".那是3个级别,GC在决定该对象是否得到印章时具有不同的行为算法. 我正在考虑将.NET的WeakReference子类化(幸运的是,有点奇怪, ..
发布时间:2020-07-25 02:48:47 C#/.NET

Java中的SoftReference和WeakReference有什么区别?

java.lang.ref.WeakReference 和 java.lang.ref.SoftReference ? 解决方案 来自 参考文献不足 简单地说,弱引用是一个 不够强大的参考 强制对象保留在内存中. 引用不足可让您充分利用 垃圾收集器的能力 确定您的可达性,因此您 不必自己做.你 创建一个像这样的弱引用: WeakReference weakWidget = n ..
发布时间:2020-06-26 20:43:41 Java开发

何时在Java中使用Weak和Phantom引用

我阅读了很多文章,但我不明白 - 在实践中我需要在哪里使用Weak和Phantom参考?软引用 - 正如我所理解的那样,是缓存的不错选择。但弱和幻影,我不知道何时使用。请提供我们需要使用它们的实际任务示例。 解决方案 您可以使用弱引用进行缓存,就像软引用一样如你所说。 PhantomReferences有什么用?我只知道它们有两个严重的情况:首先,它们允许您确定从内存中删除对象的确切 ..
发布时间:2018-12-27 20:03:38 Java开发

Java中的软引用LinkedHashMap?

Java中是否存在基于softreference的LinkedHashMap?如果不是,有没有人得到我可以重用的代码片段?我保证会正确引用它。 谢谢。 解决方案 WeakHashMap不保留插入顺序。因此,它不能被视为LinkedHashMap的直接替代品。此外,仅当键不再可访问时,才会发布地图条目。这可能不是你想要的。 如果你正在寻找的是一个内存友好的缓存,这里有一个你可以使 ..
发布时间:2018-12-27 18:40:28 Java开发

JVM如何在实践中收集SoftReferences?

我有一个在JVM中运行的两个单独的缓存(一个由第三方库控制),每个缓存都使用软引用。我希望JVM在由库控制的缓存之前清除我的受控缓存。 SoftReference javadoc声明: 对虚拟可访问对象的所有软引用都保证在虚拟机引发之前清除 OutOfMemoryError。 否则,不会对清除软 引用的时间或清除一组此类 引用不同对象的顺序进行约束。但是,鼓励虚拟机 实现偏向清除最 ..
发布时间:2018-12-05 11:18:55 Java开发

如何让java系统发布Soft References?

我将使用基于SoftReference的缓存(一个非常简单的事情)。但是,我在为它编写测试时遇到了一个问题。 测试的目的是检查缓存是否发生内存清理后,再次从服务器请求先前缓存的对象。 这里我找到了如何使系统释放软引用对象的问题。调用 System.gc()是不够的,因为在内存不足之前不会释放软引用。我正在PC上运行此单元测试,因此VM的内存预算可能非常大。 =========== ..
发布时间:2018-12-05 10:31:52 Java开发

了解Java的Reference类:SoftReference,WeakReference和PhantomReference

有人可以解释三个参考类之间的区别(或发布链接到一个很好的解释)? SoftReference > WeakReference > PhantomReference ,但我什么时候会使用每一个?为什么有 WeakHashMap 但没有 SoftHashMap 或 PhantomHashMap ? 如果我使用以下代码... WeakReference< ;字符串> ref = ..

Java:强/弱/弱/幻像参考之间的区别

我已阅读这篇文章这个话题,但我真的不明白。 在描述概念时,请给我一些建议和示例。 解决方案 Java提供两种不同的类型/类参考对象:强和弱。弱引用对象可以进一步分为 soft 和 phantom 。让我们一点一点地去。 强参考对象 StringBuilder builder = new StringBuilder(); 这是参考对象的默认类型/类,如果没有 ..