Java:寻找可变/可重新引用的弱引用实现

标签 java implementation mutable weak-references

我正在寻找一个类似于 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/

相关文章:

java - java中log4j重复记录

android - 实现类似 google+ 的滑出菜单的最佳方式?

java - 使用参数化类型来确定类型

java - g.drawImage() 只渲染 JPanel 上可见的图像部分,还是 "keep in mind"图像的其余部分?

c - 如何在 C 中链接多个实现文件

scala - 如何更新 Scala 中的可变 HashMap 元素?

for-loop - 如何在 for 循环中进行可变借用?

arrays - 如何自动将纯代码转换为使用可变数组的代码以提高效率?

java - 搜索 map 的最佳方式

java - 如何将数组传递给由 Comparable 接口(interface)限制的类型参数