什么时候(不)两个具有相同内容的字符串共享相同的内存?

时间:2013-04-05 06:31:36

标签: c# java .net memory-management literals

来自问题will two strings with same content be stored in the same memory location?

拥有Java代码

String s1="Java";

将此字符串分配到相同的内存位置(或多重):

  • 如果多次同时执行相同的程序并行执行(同时)?

可能的答案:

我目前是C#开发人员(尽管在上一个千年中用Java编程)。

我问过这个问题,因为我相信它在.NET CLR和Java(JVM)之间是一样的,我希望得到.NET应用程序的答案(但不知何故经常遇到的问题"应用程序&# 34;游泳池术语)。

所以,似乎是(抱歉在提问前没有详尽的搜索):

答案是 string 实习池是相同JVM或.NET CLR的所有实例/程序共享的。

4 个答案:

答案 0 :(得分:2)

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

每个JVM有一个字符串池...除非你使用一些奇特的JVM,否则他们决定以不同的方式实现它。

我认为这回答了,对吧?

来自similar question

答案 1 :(得分:2)

内存位置相同:

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

不同的内存位置:

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

答案 2 :(得分:1)

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

String s1 =“Java”; String s2 =“Java”; String s3 =“Java”; String s4 =“Java”;

  1. 以上 StringConstantPool 位置中可用的所有对象,所有对象都只指向一个(“Java”)位置

答案 3 :(得分:0)

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