Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 垃圾收集字符串[]后,字符串[]内的字符串会发生什么情况?_Java_String_Garbage Collection - Fatal编程技术网

Java 垃圾收集字符串[]后,字符串[]内的字符串会发生什么情况?

Java 垃圾收集字符串[]后,字符串[]内的字符串会发生什么情况?,java,string,garbage-collection,Java,String,Garbage Collection,字符串文字在字符串文字池中有引用,因此不符合垃圾收集的条件。所以,即使我说: String s = "hello"; 据我所知,字符串对象“hello”仍将在堆中。资料来源: 字符串数组中的字符串是否也是如此?假设我们有 s=null; 这3个字符串对象是否仍在池引用的堆上?或者它们将与数组对象一起进行垃圾收集 字符串文字在字符串文字池中有引用,因此不符合垃圾收集的条件 事实上,这并不完全正确。。。见下文 3个字符串对象是否仍在池引用的堆上?或者,它们将有资格与数组对象一起进行垃圾收集 它们

字符串文字在字符串文字池中有引用,因此不符合垃圾收集的条件。所以,即使我说:

String s = "hello";
据我所知,字符串对象“hello”仍将在堆中。资料来源:

字符串数组中的字符串是否也是如此?假设我们有

s=null;
这3个字符串对象是否仍在池引用的堆上?或者它们将与数组对象一起进行垃圾收集

字符串文字在字符串文字池中有引用,因此不符合垃圾收集的条件

事实上,这并不完全正确。。。见下文

3个字符串对象是否仍在池引用的堆上?或者,它们将有资格与数组对象一起进行垃圾收集

它们不会“从池中”引用。池中的引用(实际上)是弱引用

他们将没有资格进行垃圾收集

实际上,与源代码中的字符串文字相对应的
String
对象(在字符串池中)将被使用这些文字的代码引用;i、 e.JVM知道隐藏对象中有隐藏引用。这些引用是JVM在(例如)将字符串文本分配给某个对象时使用的引用

正是这些隐藏引用意味着池中的弱引用不会中断,并且相应的
String
对象不会被垃圾收集

现在,如果定义文本的代码是动态加载的,并且应用程序设法卸载代码,那么
字符串
对象可能无法访问。如果发生这种情况,它们最终将被垃圾收集

字符串文字在字符串文字池中有引用,因此不符合垃圾收集的条件

事实上,这并不完全正确。。。见下文

3个字符串对象是否仍在池引用的堆上?或者,它们将有资格与数组对象一起进行垃圾收集

它们不会“从池中”引用。池中的引用(实际上)是弱引用

他们将没有资格进行垃圾收集

实际上,与源代码中的字符串文字相对应的
String
对象(在字符串池中)将被使用这些文字的代码引用;i、 e.JVM知道隐藏对象中有隐藏引用。这些引用是JVM在(例如)将字符串文本分配给某个对象时使用的引用

正是这些隐藏引用意味着池中的弱引用不会中断,并且相应的
String
对象不会被垃圾收集


现在,如果定义文本的代码是动态加载的,并且应用程序设法卸载代码,那么
字符串
对象可能无法访问。如果发生这种情况,它们最终将被垃圾收集,

字符串文本池不是堆的一部分。这就是我提到“参考资料”的原因。根据链接中的描述,常量表(文本池)存储对驻留在堆内存中的字符串对象的引用。字符串文本池不是堆的一部分。这就是我提到“参考资料”的原因。根据链接中的描述,常量表(文字池)存储对驻留在堆内存中的字符串对象的引用。谢谢。好吧,它们不会被垃圾收集,但我仍然对池的概念有点困惑。所以池中的所有字符串都有弱隐藏引用?这个隐藏对象与常量表有什么关系?如果你能简要介绍或引用一些有帮助的链接,我可能会遗漏一些东西。谢谢。我没说有“弱隐藏引用”。我说过代码中有一个隐藏引用,字符串池中有一个“(实际上)弱引用”。我的意思是,字符串池的行为类似于弱引用,因为池中的对象不能通过池进行强访问。甲骨文还没有发表任何关于这方面的论文等(AFAIK)。这很有帮助。谢谢:)谢谢。好吧,它们不会被垃圾收集,但我仍然对池的概念有点困惑。所以池中的所有字符串都有弱隐藏引用?这个隐藏对象与常量表有什么关系?如果你能简要介绍或引用一些有帮助的链接,我可能会遗漏一些东西。谢谢。我没说有“弱隐藏引用”。我说过代码中有一个隐藏引用,字符串池中有一个“(实际上)弱引用”。我的意思是,字符串池的行为类似于弱引用,因为池中的对象不能通过池进行强访问。甲骨文还没有发表任何关于这方面的论文等(AFAIK)。这很有帮助。谢谢:)
String[] arr = {"one","two","three"};
arr=null;