问题标签 [weakhashmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1554 浏览

java - WeakHashMap - 它的目的是什么以及如何正确使用它

今天我发现这篇博客文章 讨论WeakHashMap了缓存的用法。有趣的是,不是值,而是键被存储为弱引用,当引用不再存在时,整个键值对将从 WeakHashMap 中删除。因此,这将导致以下情况发生:

我很好奇什么场景会利用这个WeakHashMap课程?

0 投票
1 回答
675 浏览

java - Java SoftHashMap 实现

我想SoftHashMap基于 JavaSoftReferenceHashMap. Java 文档,关于 WeakHashMap,说键是弱引用而不是值。我想知道什么hashcode()将用于底层的 put 和 pull 函数HashMap。我假设WeakHashMapput 的工作方式是这样的:hashMap.put(new WeakReference(key), value);如果这是真的,如何找到密钥的条目。

如果值被包装在 aWeakReference而不是键中会不会更好?

0 投票
2 回答
825 浏览

java - 如果值包含对键的唯一强引用,是否会收集 WeakHashMap 的条目?

我需要将一些数据与其生命周期内的密钥相关联,因此我使用的是WeakHashMap. 但是,除此之外,我还需要通过其对应的值获取一个键。最简单的方法是在创建值时保持引用:

当然,当我Value在我的程序中使用时,它key不会消失。但是,如果在 map 之外没有更多对键或其值的引用,它会被垃圾回收吗?还是值中幸存的强引用阻止了它?

0 投票
2 回答
440 浏览

java - Java,将对象转换为软引用

我需要将一个数据对象放入包含软引用的弱​​哈希图中。如何将我的“可绘制”对象转换为软引用?

tempPulled 应该是 "sPulled" ,即软引用

0 投票
1 回答
274 浏览

java - 如何克隆/复制 WeakHashMap?(深拷贝)

我有一个 HashMap,我使用 clone 函数制作了一个深拷贝。但我将其切换为 WeakHashMap 以尝试一些内存管理。

我仍然想做这个克隆函数,但它不是 WeakHashMap 中方法的一部分。如何有效地将 WeakHashMap 克隆到另一个中?我想我可以做一个循环,添加密钥并检查现有密钥等,但我不确定这是否是最好的方法。

0 投票
1 回答
2597 浏览

java - WeakHashMap 和强引用值

Javadocs 说“当一个键被丢弃时,它的条目就被有效地从映射中删除了”。

但是除非有另一个线程偶尔会删除这些Map.Entry条目,否则值对象不会被映射强引用吗?但是由于没有这样的线程在运行,只有get方法调用可以删除这样的条目——一次一个。

我几乎总是WeakHashMap<K, WeakReference<V>>因为这个原因使用。为什么他们不将其设为默认行为 - 值也作为弱引用?

0 投票
6 回答
19818 浏览

java - 弱哈希映射示例

我创建一个 WeakHashMap 作为

其中 emp 是一个 Employee 对象。现在,如果我执行 emp = null 或说不再引用 emp 对象,那么该条目是否会从 WeakHashMap 中删除,即 Map 的大小是否为零?
如果是 HashMap,反之亦然吗?
我对 WeakHashMap 的理解正确吗?

0 投票
1 回答
243 浏览

java - Java:weakhashmap 如何确定密钥是否“过时”?

它怎么知道这把钥匙是旧的并准备扔掉?为什么是字符串文字?

例如,

这是否意味着一旦 A() 返回,'p' 键就会消失?

0 投票
4 回答
6810 浏览

java - 弱哈希映射如何知道垃圾收集对象?

我最近发现了WeakHashMapJava 中的数据结构。

但是,我不明白当映射不再正常使用时垃圾收集映射是什么意思。数据结构如何知道我将不再在程序中使用密钥?如果我长时间不参考密钥怎么办?

0 投票
2 回答
1686 浏览

java - Java:弱引用堆栈

在 Java 中有一种称为 WeakHashMap 的数据结构,它将弱引用存储为键。每当弱引用从内存中取出时,条目就会从映射中删除。

如果我有一个数据结构,例如堆栈或集合,我在其中存储弱引用,当弱引用从内存中取出时,它们的条目会被自动删除吗?

下面是一个存储弱引用的堆栈示例。