Java String.substring 方法潜在的内存泄漏?

标签 java string memory-leaks

我正在查看 String 类 API,看起来可能存在由 substring 方法引起的内存泄漏,因为它与原始 String 共享相同的字符数组。

如果原始字符串很大,那么子字符串返回的小字符串可以防止原始字符串(由大数组备份)在 Java 中被垃圾回收。

有什么想法还是我读错了 API。

最佳答案

存在内存泄漏的可能性,如果您获取一个相当大的字符串的子字符串而不进行复制(通常通过 String(String) 构造函数) .

请注意,自 Java 7u6 以来,这已发生变化. 参见 https://bugs.openjdk.java.net/browse/JDK-7197183 .

关于实现 flyweight patternString 对象的原始假设不再被视为有效。

参见 this answer了解更多信息。

关于Java String.substring 方法潜在的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14161050/

相关文章:

java - startActivityForResult(Intent, int) 整数参数的目的是什么

java - 寻找具有超过 1 个连通分量的邻接矩阵的最小生成树

java - SortedSet 无法按照文档工作

list - 为什么 `list.Remove()` 试图明确避免内存泄漏?

javascript weakmap 保留对已删除对象的引用

java - Netbeans "illegal start of type"错误

python - 删除DataFrame中 "/"之前的空白区域

python - 在python中比较字符串时忽略空格

java - 从 BufferedReader (readLine) 读取返回 null?

java无限循环调用datainputstream收到内存不足异常