我正在寻找一个类似于 java.lang.ref.WeakReference
的弱引用实现,但它提供了一个 set()
方法或一些其他的重引用方式引用创建的弱引用对象。这是示例:
MutableWeakReference ref = new MutableWeakReference(someObject);
ref.set(anotherObject);
我需要这个来避免创建对象,在我的例子中,这会减慢一个数量级的执行时间,因为我不断地改变我的弱引用所指的对象。
我试图从 JDK 复制代码,但这似乎是不可能的,因为 java.lang.ref.Reference
使用了内部的 sun.misc.Cleaner
类。我还查看了 Android 实现,但它似乎依赖于 Dalvik VM 进行垃圾收集。我想知道这是否真的可以在不更改 JVM/环境的情况下实现。
最佳答案
是否可以将您的引用封装在一个简单的代码中
class MyOwnReference<T> {
public T ref;
public void set(T o) { ref = o; }
}
并创建WeakReference<MyOwnReference<WhatEver>>
?
I wonder if this is actually possible to implement without changing the JVM / environment.
不,您可能无法“重新实现”WeakReference
.它是一个 JVM 支持的类。
你确定是WeakReference
的创作吗?减慢速度的实例?我不会想做
ref = new WeakReference(someObject);
而不是一些
ref.set(anotherObject);
会贵很多。
关于Java:寻找可变/可重新引用的弱引用实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4987146/