问题标签 [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.
java - java中的内存缓存对象
我想在内存中缓存对象。要求如下:
- 每个记录/对象都与一个唯一键相关联。
- 要存储 400-500 条记录/对象。如果记录数增加超过指定限制,则应逐出较旧的记录。
- 记录的存储时间不应超过 2 分钟。
- 当 JVM 内存不足时(一种弱引用)应该缩小。
- 不能使用第三方库,因为它是一个小模块,目的只是减少不必要的网络访问。
- 写入更多,读取更少
这里的安全性也是一个问题,因为我们要缓存一些敏感数据。这些数据将被缓存在内存中。我真的应该担心安全性并加密数据吗?
我正在寻找一个提供类似功能的 Java 类。
目前我正在考虑扩展WeakHashMap
和实施各种私有/公共方法以符合要求。
如果您有任何其他想法,请在这里分享。
java - Java:为什么 WeakHashMap 实现了 Map,而 AbstractMap 已经实现了它?
可能重复:
Java.util.HashMap — 为什么 HashMap 扩展 AbstractMap 并实现 Map?
为什么父类和子类都实现相同的接口?
WeakHashMap<K,V>被声明为扩展AbstractMap<K,V>并实现Map<K,V>。
但是AbstractMap<K,V>已经实现了Map<K,V>。看起来implements
声明是多余的。
它被宣布的原因是什么?
java - 具有 Long、Int 或 String 等类型的 WeakHashMap
在对如何在 android 中传递对象引用进行一些研究时,我正在考虑以下问题。
假设我有一个带有 Long 作为键的 WeakHashmap。现在我将一个对象放入这个 WeakHashMap 并将其分配给键“new Long(1)”(假设我将保存对这个 Long 的引用)。
现在应用程序的另一部分创建了一个新的 Long(1),然后我将我的第一个 Long(用作键)设置为 null。
- WeakHashMap 中的对象会发生什么?
- 如果我将 Long 替换为具有 Long 成员的自己的 Class 并让它的 compare()-Method 返回 true,如果它与另一个相同类型的对象(我自己的类)在它的 Long 中具有相同的值。
- 假设在这两种情况下 WeakReference 都被清除了。如果我在清除第一个密钥之前使用第二个创建的密钥访问 WeakHasMap 会有所不同吗?
java - WeakHashMap 随机清除
我正在运行一个游戏,当我启动时我将图像加载到WeakHashMap
图像中。当我运行我的游戏时,我的 RAM 一直在增加,最后我WeakHashMap
只是卸载了他们所有的数据。这与垃圾收集有关吗?有什么解决办法吗?
java - 在 WeakHashMap 上重新创建相同的键
根据 Java doc for weakhashmap:
“此类主要用于键对象,其 equals 方法使用 == 运算符测试对象身份。一旦丢弃此类键,它将永远无法重新创建,因此不可能在 WeakHashMap 中查找该键"
这是否意味着如果我们使用 objectA 作为 Weakhashmap 中条目 0 的键,然后我们删除该条目,testMapHashWeak.remove(objectA);
我们就不能objectA
对另一个条目使用相同的键?因为我做了一个小测试,我可以做到:
作为输出:
java - 当对象被垃圾回收时记录
我的应用程序记录了某些对象的使用情况——我的设置使用 AspectJ 来识别我感兴趣的上下文并记录这些使用情况。我稍后加载日志文件进行分析,但出于效率原因,知道何时不再可访问对象很有用。
我目前的方法是使用“垃圾记录器”记录我感兴趣的对象,然后创建一个包含对象身份哈希码的“保存器”对象,并将其存储在弱哈希图中。这个想法是当对象被收集时,saver 对象将从弱哈希映射中移除并被收集,从而运行代码来记录收集对象的身份哈希码。我使用单独的线程和队列来防止在垃圾收集器中造成瓶颈。这是垃圾记录器代码:
我的问题是这看起来很复杂,因为弱哈希映射不一定会清除其条目,除非需要空间,所以我可能会在收集对象后等待很长时间才能记录它。基本上,我正在寻找一种更好的方法来实现这一目标。
注意 - 我正在监视任意对象并且无法控制它们的创建,因此无法覆盖它们的 finalize 方法。
android - 在 Android 应用程序中使用 xstream 时调用 WeakHashMap 时堆栈溢出
当 xstream 将 ShootRecord 转换为 xml 时,为什么会出现“调用 Ljava/util/WeakHashMap 时堆栈溢出”错误?
ShootRecord 类字段和构造函数
MainActivity 类定义:
public class MainActivity extends Activity implements View.OnTouchListener
FileSender 类构造函数:
FileSender 中的方法:
public boolean postToServletOverWifi(ShootRecord recToSend, Context context){
调用方法:
public void promptUserToSendShootRecord(ShootRecord recToSend)
{
multithreading - 带有 WeakHashMap 的 ConcurrentModificationException
我有下面的代码,但我得到 ConcurrentModificationException,我应该如何避免这个问题?(出于某种原因,我必须使用 WeakHashMap)
java - 有 HashMap 和 Concurrent HashMap 的时候,WeakHashMap 的目的是什么?
当已经有其他实现可用时,需要引入 Weak HashMap。
简而言之,我有两个问题:
Why jdk has WeakHashMap when there is HashMap and Concurrent HashMap in java ?
What is the use of it in real life applications ?
编辑 :
虽然 WeakHashmap 键是一个弱引用,但它们仍然引用了一些东西,而不是 GC 丢弃 WeakHashMap 中的键。
java - 弱哈希映射与哈希映射
在下面的代码示例中,当键设置为 null 并被System.gc()
调用时,WeakHashMap
会丢失所有映射并被清空。
Output: Weak Hash Map :{}
当WeakHashMap
与 一起使用HashMap
并且键设置为空时,WeakHashMap
不会丢失其键值映射。
输出:
Weak Hash Map :{Java=Java, Hello=Hello, World=World, Programming=Programming}
Hash Map :{Programming=Programming, World=World, Java=Java, Hello=Hello}
我的问题是为什么即使在丢弃密钥之后,第二个代码示例中的条目也不会WeakHashMap
丢失?