java string 内存泄漏_java – String类中的substring方法导致内存泄漏

参见英文答案 > Java String.substring method potential memory leak?                                    3个

据说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标准库中没有很多实例可以很容易地保持对对象的隐藏引用.在一般情况下,请注意您构建的所有引用,可能是未清理的集合或外部资源(文件,数据库事务,本机窗口小部件等)中可能出现的最常见问题.

标签:java,memory,memory-leaks

来源: https://codeday.me/bug/20190926/1818385.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值