【发布时间】:2015-05-22 17:55:29
【问题描述】:
阅读String#substring (Java 1.7) 的源代码,看起来它重用了字符数组,但偏移量和长度不同。这意味着如果我有一个巨大的String 子字符串,初始字符串将永远不会被 GC 回收(对吗?)。
确定巨型String 被回收的最简单方法是什么?我正在运行JavaSE-1.7。
(出于好奇,我将在 Java 中编写一个基数实现以减少内存使用。这个问题的答案对于避免基数树使用过多的内存至关重要)
【问题讨论】:
-
你能用你正在使用的 Java 的精确版本更新你的问题吗?
-
Pshemo:问题已更新。
-
@Ztyx 如果您希望有人收到有关您的评论的通知,请确保在其中添加
@nickOfThatPerson。无论如何,我要问的是更多关于版本号的问题。我很感兴趣它是在Java 1.7.0_06之前还是之后,因为这种行为发生了变化,以避免存储原始数组,正如您注意到的那样,GC 无法删除该数组。 -
@Pshemo 我明白了。无论如何,我在本地运行
Java 1.8.0_45-b14。
标签: java