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

String类中的substring方法导致内存泄漏,第1张

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

在过去的JDK版本中,该

substring
方法的实现将建立一个新
String
对象,该对象保留对整个char数组的引用,以避免复制它。因此,您可能会无意中仅使用一个字符串来引用一个很大的字符数组。

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

如果要使用旧的JDK(早于OpenJDK 7,Update 6),并且希望在之后包含最少的字符串

substring
,请使用带有另一个字符串的构造函数:

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

至于第二个问题,关于“其他可能导致Java内存泄漏的事情”,不可能以建设性的方式回答。在Java标准库中,没有很多实例可以让您轻松地隐藏对对象的引用。通常,请注意您构建的所有引用,最常见的问题可能是未清理的集合或外部资源(文件,数据库事务,本机窗口小部件等)引起的。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5428275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存