相关疑难解决方法(0)


ES6 WeakMap的实际用途是什么?

WeakMapECMAScript 6中引入的数据结构的实际用途是什么?

由于弱映射的键会创建对其相应值的强引用,因此只要其键仍处于活动状态,确保插入到弱映射中的值永远不会消失,它不能用于备注表,缓存或您通常使用弱引用的任何其他内容,具有弱值的映射等.

在我看来,这个:

weakmap.set(key, value);
Run Code Online (Sandbox Code Playgroud)

......这只是一种迂回的说法:

key.value = value;
Run Code Online (Sandbox Code Playgroud)

我错过了哪些具体的用例?

javascript weakmap ecmascript-6

374
推荐指数
7
解决办法
6万
查看次数

什么是WeakHashMap以及何时使用它?

什么是什么WeakHashMap时候应该使用它?a WeakHashMap和a 之间有什么区别HashMap

java collections weakhashmap

144
推荐指数
5
解决办法
9万
查看次数

为什么我们需要java中的弱引用

我知道弱引用受到垃圾收集器的支配,我们不能保证弱引用会存在.我看不出需要弱参考,但确定应该有理由.

  • 为什么我们需要java中的弱引用?
  • java中弱引用的实际(某些)用法是什么?如果您可以分享您在项目中的使用方式,那就太棒了!

java weak-references

19
推荐指数
3
解决办法
9825
查看次数

为什么Phantom References在排队时没有被清除?

我们可以看到"幻影可达"与"无法访问"一样无法访问:§

如果一个物体既不是强烈的,柔和的,也不是微弱的可触及的,那么该物体是幻影可达的,它已被最终确定,并且一些幻象参考指的是它.

最后,如果无法通过上述任何方式访问某个对象,则该对象无法访问,因此有资格进行回收.

现在,来自:http://download.oracle.com/javase/6/docs/api/java/lang/ref/PhantomReference.html

与软引用和弱引用不同,垃圾收集器在排队时不会自动清除幻像引用.通过幻像引用可访问的对象将保持不变,直到所有此类引用都被清除或自身无法访问.

基本原理是什么?还有一个吗?

这是Java API怪癖的另一个典型案例吗?

java garbage-collection

16
推荐指数
2
解决办法
997
查看次数

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

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

但是,我不明白它的意思是垃圾收集不再正常使用时的映射.数据结构如何知道我将不再使用我的程序中的密钥?如果我长时间没有提到钥匙怎么办?

java garbage-collection weakhashmap data-structures

13
推荐指数
1
解决办法
6206
查看次数

weakhashmap如何运作?

正如weakhashmap如何理解对其中一个密钥的引用现在已经过时,特别是如果密钥是一个汇集的String?

java hashmap

7
推荐指数
1
解决办法
1206
查看次数

WeakHashMap的用法?

WeakHashMap是Map接口的一个实现,如果相应的键不再被任何程序部分引用,Grabage Collector可以回收值对象的内存.因此,如果密钥不再用于程序中.它的Entry对象将被垃圾收集,无论其用途如何.它清晰到这里

这与HashMap不同,即使不再引用key,值对象仍保留在HashMap中.我们需要在HashMap对象上显式调用remove()方法来删除值.调用remove将只删除map中的条目.它对GC的准备将取决于它是否仍然在程序中的某个地方使用.

请找到上面解释的编码示例

根据我的理解,在HashMap上使用WeakHashMap

我的理解是,只有当我们想要确保Grabage Collector在任何部分程序不再引用密钥时回收值对象时,我们才应该使用WeakHashMap.这使程序内存有效我的理解是正确的吗?

根据JavaDocs使用WeakHashMap ,我可以发现这个声明

此类主要用于密钥对象,其等于方法使用==运算符测试对象标识.

我没有得到上述声明的含义以及它与我对WeakHashMap用法的理解形成对比.实际上我没有得到这个陈述与WeakHashMap的使用有何关系?

更新: - 进一步仔细阅读下面的声明javadocs

当其密钥不再正常使用时,WeakHashMap中的条目将自动被删除.更准确地说,给定密钥的映射的存在不会阻止密钥被垃圾收集器丢弃,即,可以最终化,最终化,然后回收.当一个键被丢弃时,它的条目将被有效地从地图中删除,因此该类的行为与其他Map实现略有不同.

为了我和他人的利益,我正在修改我的理解

根据我的修订理解,在HashMap上使用WeakHashMap

我们应该只在我们想要确保在GC运行时从地图中删除键值对时才能使用WeakHashMap,而键不再是普通用途而不是map本身.

例如: -

    WeakHashMap<Integer, String> numbers = new WeakHashMap<Integer, String>();
    numbers.put(new Integer(1), "one");// key only used within map not anywhere else
    numbers.put(new Integer(2), "two");
    System.out.println(numbers.get(new Integer(1))); // prints "one"
    System.gc();
    // let's say a garbage collection happens here
    System.out.println(numbers.get(new Integer(1))); // prints "null"
    System.out.println(numbers.get(new Integer(2))); // prints "null"


    Object key = new Object();
    m1.put(key, c1);
    System.out.println(m1.size());
    key = null or new …
Run Code Online (Sandbox Code Playgroud)

java hashmap weakhashmap

6
推荐指数
1
解决办法
1288
查看次数

有了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 key 是弱引用,但它们仍然引用了一些东西,而不是 GC 在 WeakHashMap 中丢弃键的依据。

java hashmap concurrenthashmap java.util.concurrent weakhashmap

4
推荐指数
1
解决办法
4810
查看次数

如何避免多次创建相同的对象引用?

想象一下,我有一些看起来像这样的类:

class Car {
    private Image carImage;

    public Car(int imageIndex) {
        switch (imageIndex) {
            case 1: carImage = generateCarImage(1); break;
            # and so forth
        }
    }
}

class Audi extends Car {
    private int numberOfSeats;
    public Audi(int imageIndex, int numberOfSeats) {
        super(imageIndex);
        this.numberOfSeats = numberOfSeats;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在假设我使用相同的图像创建多个奥迪:

Audi car1 = new Audi(1,2);
Audi car2 = new Audi(1,3);
Run Code Online (Sandbox Code Playgroud)

car1和car2会延伸相同的物体吗?我假设没有,但有没有办法可以做到这一点?我问,因为我想避免两次生成和存储相同的图像.

编辑:

这两个奥迪会参考同一辆车吗,例如图像只生成和存储一次,对一个的任何变化都会影响另一个吗?

class Car {
    private Image carImage;
    public Car(int imageIndex) {
        switch (imageIndex) {
            case 1: # carImage = readfile(1.jpeg) …
Run Code Online (Sandbox Code Playgroud)

java

4
推荐指数
1
解决办法
3190
查看次数

什么时候使用弱引用?

我了解 Java 弱引用是什么。我想知道的是它通常用于解决哪种具体问题。有没有包含它们的模式?

java weak-references

3
推荐指数
1
解决办法
2943
查看次数

Java中一个对象与另一个对象的弱关联?

我上课的时候

class MyClass1 {
    MyClass2 member;
}
Run Code Online (Sandbox Code Playgroud)

ans它是垃圾收集,然后member也有资格垃圾收集.

我可以模拟同样的关系Map吗?

所以,我希望一个带有弱引用键的地图.即地图本身不应该阻止垃圾收集密钥.一旦密钥被垃圾收集,其关联值也有资格进行垃圾收集.

这可能吗?

UPDATE

这只是WeakHashMap

java dictionary garbage-collection weak-references java-8

1
推荐指数
1
解决办法
88
查看次数