我的应用程序创建了一个类的很多实例,比如 A 类。所有实例都包含一个字符串,其中大多数都包含相同的字符串
class A {
String myString;
}
我知道 JVM 使“所有相等的字符串”指向只存储一次的同一个字符串。如果我的 A 实例之一的 myString 字段被覆盖,则对原始字符串的引用将替换为对新 String 值的引用,并且一切都按预期工作,就好像每个实例都有一个字符串的副本一样。
兼容的 JVM 是否需要这种行为,或者它是对 jvm 的一种改进,可能会从一个 jvm 更改为另一个,或从一个版本更改为另一个版本?
提出问题的另一种方式:在设计高度冗余(基于字符串)的数据结构时,应该只依赖写时复制机制还是建议在应用程序级别放置一些东西?