相关疑难解决方法(0)

什么是Java字符串池以及"s"与新String("s")有何不同?

String Pool是什么意思?以下声明之间有什么区别:

String s = "hello";
String s = new String("hello");
Run Code Online (Sandbox Code Playgroud)

JVM存储这两个字符串有什么区别吗?

java string

111
推荐指数
5
解决办法
6万
查看次数

WeakReference字符串没有垃圾收集?怎么样?

我正在WeakReference维基百科阅读,我看到了这段代码

public class ReferenceTest {
        public static void main(String[] args) throws InterruptedException {

            WeakReference r = new WeakReference(new String("I'm here"));
            WeakReference sr = new WeakReference("I'm here");

            System.out.println("before gc: r=" + r.get() + ", static=" + sr.get());
            System.gc();
            Thread.sleep(100);

            // only r.get() becomes null
            System.out.println("after gc: r=" + r.get() + ", static=" + sr.get());

        }
}
Run Code Online (Sandbox Code Playgroud)

当它运行时,这就是结果

在gc之前:r =我在这里,静态=我在这里

在gc之后:r = null,static =我在这里

srr变量都是引用字符串对象.r现在是垃圾收集但是,为什么sr在调用垃圾收集器后没有收集垃圾?

我只是好奇这是怎么发生的.

java weak-references

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

标签 统计

java ×2

string ×1

weak-references ×1