3
使用分析,我似乎可以看到一個蘋果的1.6 Java中的以下內容:子和垃圾在Java 1.6
我開始適度長Java字符串。我使用String.split("\\W+")
將它分成令牌。該代碼然後保存對一些拆分片段的引用。
看來,如果我相信我的眼睛在yourkit中,那麼Java有幫助而不是複製這些字符串,以便我實際上持有對冗長原件的引用。在我的情況下,這會導致相當大的空間浪費。
這看起來似乎合理嗎?很容易添加一個循環制作這些人的副本。
您的懷疑是正確的。請參閱Jon Skeet對http://blogs.msdn.com/b/ericlippert/archive/2011/07/19/strings-immutability-and-persistence.aspx的評論 – SLaks
String.substring也是如此 – Joel
相關:[什麼是在Java中使用表達式「new String(...)」的目的是什麼?](http://stackoverflow.com/questions/390703) – McDowell