gpt4 book ai didi

java - String 类中的 substring 方法导致内存泄漏

转载 作者:IT王子 更新时间:2023-10-28 23:31:03 29 4
gpt4 key购买 nike

据说String类中的substring方法会导致内存泄漏。这是真的吗?如何?它有什么替代方案?
特别是在寻找答案,
还有哪些其他因素会导致java中的内存泄漏?这将帮助我在编码时小心。

最佳答案

在过去的 JDK 版本中,substring 方法的实现将构建一个新的 String 对象,以保持对整个 char 数组的引用,以避免复制它。因此,您可能会在不经意间保留对只有一个字符串的非常大的字符数组的引用。 Here's an example这可能导致的错误。

此方法现已更改,此“泄漏”不再存在。

如果您想使用旧的 JDK(比 OpenJDK 7 更新 6 更早)并且希望在 substring 之后使用最少的字符串,请使用带有另一个字符串的构造函数:

String s2 = new String(s1.substring(0,1));

关于你的第二个问题,关于“其他可能导致java内存泄漏的事情”,不可能以建设性的方式回答。在 java 标准库中,您可以轻松地保留对对象的隐藏引用的情况下,并没有很多实例。在一般情况下,请注意您构建的所有引用,最常见的问题可能出现在未清理的集合或外部资源(文件、数据库事务、 native 小部件等)中。

关于java - String 类中的 substring 方法导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15612157/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com