在过去的JDK版本中,该
substring方法的实现将建立一个新
String对象,该对象保留对整个char数组的引用,以避免复制它。因此,您可能会无意中仅使用一个字符串来引用一个很大的字符数组。
现在,此方法已更改,并且此“泄漏”不再存在。
如果要使用旧的JDK(早于OpenJDK 7,Update 6),并且希望在之后包含最少的字符串
substring,请使用带有另一个字符串的构造函数:
String s2 = new String(s1.substring(0,1));
至于第二个问题,关于“其他可能导致Java内存泄漏的事情”,不可能以建设性的方式回答。在Java标准库中,没有很多实例可以让您轻松地隐藏对对象的引用。通常,请注意您构建的所有引用,最常见的问题可能是未清理的集合或外部资源(文件,数据库事务,本机窗口小部件等)引起的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)