小编Iga*_*ich的帖子

Java WeakHashMap类

我想测试Java WeakHashMap类功能,为此我编写了以下测试:

public class WeakHashMapTest {

public static void main(String args[]) {
    Map<String, Object> weakMap = new WeakHashMap<>();
    String x = new String("x");     
    String x1 = new String("x1");   
    String x2 = new String("x2");   
    weakMap.put(x, x);
    weakMap.put(x1, x1);
    weakMap.put(x2, x2);
    System.out.println("Map size :" + weakMap.size());
    // force all keys be eligible
    x=x1=x2=null;
    // call garbage collector 
    System.gc();
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    System.out.println("Map size :" + weakMap.size());
    System.out.println("Map :" + weakMap);
}

}    
Run Code Online (Sandbox Code Playgroud)

运行WeakMapTest类后,我得到以下输出令人不快惊讶:

gc前的地图:{x = …

java garbage-collection weak-references weakhashmap

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

Java字符串池测试不起作用

在阅读了Java String Pool之后,我决定进行一些测试.我编写了以下测试程序,根据JDK规范,它的结果与Java String Pool行为不匹配.

public class Temp_20141220 {

    private String b1 = "hello";

    public static void main(String[] args) {
        Temp_20141220 t = new Temp_20141220();
        String b = "hello";
        System.out.println("b==b1 =" + t.b1 == b);
    }
}
Run Code Online (Sandbox Code Playgroud)

我一直期望得到输出:b == b1 = true但是我得到了:b == b1 = false

为什么这样?Ubuntu的JVM不支持这个Java字符串池功能吗?

java string pool

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