如果做同样的内存(不)两个字符串内容相同的份额?(When do (not) two strings

2019-08-19 17:00发布

从这个问题未来将与相同内容的两个字符串存储在相同的内存位置?

具有Java代码

String s1="Java";

将这个字符串在同一个存储位置(或multipe)进行分配:

  • 如果在同一程序中多次并行(同时)执行它推出?

可能的答案:

我目前的C#开发者(虽然在编程中的Java以前的千年)。

我问这个问题,因为我认为这是.NET CLR和Java(JVM),我希望得到的.NET应用程序的答案之间的相同(但不知何故,是由经常遇到的“应用程序”池方面怀疑)。

所以,这似乎是(对提问前没有详尽搜索不好意思):

  • 请问CLR / JVM保持一个单一的实习生池所有正在运行的.NET / Java应用程序?

的回答是字符串实习生池每同一JVM或.NET CLR的所有实例/程序共享。

Answer 1:

@根纳季 - 瓦宁 - 新西伯利亚....

字符串S1 = “Java” 的;字符串S2 = “Java” 的;串S3 = “Java” 的;串S4 = “Java” 的;

  1. 上述在StringConstantPool地点的所有对象的全部对象都指向只有一个(“Java”的)位置


Answer 2:

Is string pool created per class basis or per JVM basis?

有每个JVM一个字符串池......除非你使用了一些异国情调的地方JVM,他们已经决定以不同的方式实现它。

我认为,答案,对吗?

从类似的问题



Answer 3:

相同的内存位置:

String s1="Hola";
String s2="Hola";

不同的存储位置:

String s1="Hola";
String s2=new String("Hola"); 


Answer 4:

的内容相同的字符串将共享同一空间同一JVM中的每个实例



文章来源: When do (not) two strings with same content share the same memory?