草庐IT

SoftReference

全部标签

java - 具有弱键的并发映射

我有一个高度并发的应用程序,它使用文件系统上的资源。两个线程同时访问同一资源的可能性很小,但如果发生这种情况,应用程序可能会显示有线行为。每个资源都可以通过String坐标vector进行映射(绑定(bind)在ResourceIdentifier类中)。在我当前的解决方案中,我创建了此类资源标识符的ConcurrentMap以收集线程在访问资源时使用的监视器:(ResourceIdentifier覆盖equals和hashCode正确。)ConcurrentMapconcurrentMap=newConcurrentHashMap();publicObjectaquireMonito

Java SoftReference 保证失败

JDK7文档中有关于SoftReference的内容。:"Allsoftreferencestosoftly-reachableobjectsareguaranteedtohavebeenclearedbeforethevirtualmachinethrowsanOutOfMemoryError."但是,在我的测试程序中,我一直看到OutOfMemoryError(下面的“陌生人行为”部分除外)://RefObjectTest.javaimportjava.util.*;importjava.lang.ref.*;publicclassRefObjectTest{publicstati

java - 优雅地完成 SoftReference 引用对象

我正在使用一个搜索库,它建议将搜索句柄对象保持打开状态,因为这有利于查询缓存。随着时间的推移,我观察到缓存趋于膨胀(几百兆并不断增长)并且OOM开始出现。没有办法强制执行此缓存的限制,也没有计划它可以使用多少内存。所以我增加了Xmx限制,但这只是解决问题的临时方法。最终我想使这个对象成为java.lang.ref.SoftReference的referent。因此,如果系统的可用内存不足,它会释放该对象,并根据需要创建一个新对象。这会在重新启动后降低一些速度,但这是比遇到OOM更好的选择。我看到的关于SoftReferences的唯一问题是没有干净的方法来最终确定它们的引用对象。在我的

java - 具有值(等于)相等性的 SoftReference 的潜在用途

我之前得出的结论是,如果您需要一个具有基于值(等于)的相等性的SoftReference,那么设计就会很糟糕,但内部人员除外。这是继GoogleCollections和Guava之后,不包括此类。但是我遇到了一个问题,我认为可以使用这样的对象。我们在视觉效果渲染场中有一个Assets管理系统,其中有100个进程运行相同的作业,只是渲染的帧数不同。我们有一个Oracle数据库,需要记录所有使用的Assets。在中间层Assets管理系统中,我们可以使用HashSet来记录是否要插入到Oracle中的对象,而不是用相同的插入来攻击Oracle,在这种情况下只有一个会成功完成所有作业。我可以

android - Lazy List 上的位图缓存(SoftReference,Hard)似乎无法正常工作 - Android

我已经在stackoverflow中阅读了关于延迟列表加载的几个主题,并且我正在尝试了解如何在android中处理不同的缓存级别。如这里所述:LazyloadofimagesinListView我用过MultithreadingForPerformance,GillesDebunne的教程。例子。我对其进行了修改,以便以正确的方式工作并且还可以使用1.6。这是代码:/**Copyright(C)2010TheAndroidOpenSourceProject**LicensedundertheApacheLicense,Version2.0(the"License");*youmayno

java - SoftReference 过早地收集垃圾

我正在为我的Android应用程序实现缓存机制。我使用SoftReference,就像我发现的许多示例一样。问题是,当我在ListView中向上或向下滚动时,大部分图像已经被清除。我可以在LogCat中看到,每次应用程序加载新图像时,我的应用程序都会被垃圾收集。这意味着ListView中的大部分不可见图像都消失了。因此,每次我回滚到较早的位置(我之前真正下载过图像的位置)我都必须再次下载图像-它们不是缓存。我也研究过这个话题。AccordingtoMarkMurphyinthisarticle,似乎存在(或曾经存在?)SoftReference的错误。其他一些结果表示相同的事情(或相同

c# - 为什么 .NET 不像 Java 那样既有 SoftReference 又有 WeakReference?

我真的很喜欢弱引用。但我希望有一种方法可以告诉CLR您认为引用有多弱(例如,在1到5的范围内)。那太棒了。Java有SoftReference、WeakReference,我相信还有第三种类型,称为“幻象引用”。那里有3个级别,GC在决定该对象是否被砍掉时有不同的行为算法。我正在考虑对.NET的WeakReference进行子类化(幸运的是,有点奇怪,它没有被密封)来制作一个基于到期计时器或其他东西的伪软引用。 最佳答案 我认为NET没有软引用的根本原因是因为它可以依赖具有虚拟内存的操作系统。Java进程必须指定其最大操作系统内存(

c# - 为什么 .NET 不像 Java 那样既有 SoftReference 又有 WeakReference?

我真的很喜欢弱引用。但我希望有一种方法可以告诉CLR您认为引用有多弱(例如,在1到5的范围内)。那太棒了。Java有SoftReference、WeakReference,我相信还有第三种类型,称为“幻象引用”。那里有3个级别,GC在决定该对象是否被砍掉时有不同的行为算法。我正在考虑对.NET的WeakReference进行子类化(幸运的是,有点奇怪,它没有被密封)来制作一个基于到期计时器或其他东西的伪软引用。 最佳答案 我认为NET没有软引用的根本原因是因为它可以依赖具有虚拟内存的操作系统。Java进程必须指定其最大操作系统内存(