我正在查看 String 类 API,看起来可能存在由 substring 方法引起的内存泄漏,因为它与原始 String 共享相同的字符数组。
如果原始字符串很大,那么子字符串返回的小字符串可以防止原始字符串(由大数组备份)在 Java 中被垃圾回收。
有什么想法还是我读错了 API。
最佳答案
存在内存泄漏的可能性,如果您获取一个相当大的字符串的子字符串而不进行复制(通常通过 String(String)
构造函数) .
请注意,自 Java 7u6 以来,这已发生变化. 参见 https://bugs.openjdk.java.net/browse/JDK-7197183 .
关于实现 flyweight pattern 的 String
对象的原始假设不再被视为有效。
参见 this answer了解更多信息。
关于Java String.substring 方法潜在的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14161050/