【发布时间】:2012-12-19 02:56:03
【问题描述】:
我正在查看 String 类 API,并且看起来存在由 substring 方法引起的潜在内存泄漏,因为它与原始 String 共享相同的字符数组。
如果原始字符串很大,那么子字符串返回的小字符串可以防止原始字符串(由大数组备份)在Java中进行垃圾回收。
任何想法或我是否读错了 API。
【问题讨论】:
-
这在技术上根本不是内存泄漏,因为字符数组仍然被引用,并且可以在收集所有引用它的字符串时收集。部分字符数组可能不再使用,但这不会导致泄漏。
-
如果每个 100MB 有 100 个大字符串,并且有一个子字符串 (0,1),则从技术上讲,您持有 String 类中使用的 value[] 并且在您的应用程序中永远不会有大字符串有资格成为垃圾收藏
标签: java string memory-leaks