作者:dmcm0010 | 来源:互联网 | 2023-09-10 12:11
1JDK6中的1subString方法会存在内存1泄露问题,是由于源字符串中的1value数组不会被1GC回收。看到一篇文章(http://www.cnblogs.com/hxy520...),里面有
中的
方法会存在内存
问题,是由于源字符串中的
数组不会被
回收。
看到一篇文章(http://www.cnblogs.com/hxy520...),里面有如下代码,说在
下会报内存
的错误。请问下,为什么会产生?
的每次
不是只加一点点内存占用么?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public class SubMain {
private String strs = new String(new byte[100000]);
String getString() {
return this.strs.substring(0, 2);
}
public static void main(String[] args) {
List list = new ArrayList();
SubMain sub = new SubMain();
for (int i = 0; i <1000000; i++) {
list.add(sub.getString());
}
}
}
/*Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:133)
at java.lang.StringCoding.decode(StringCoding.java:173)
at java.lang.StringCoding.decode(StringCoding.java:185)
at java.lang.String.(String.java:570)
at java.lang.String.(String.java:593)
at com.jd.o2o.substring.SubMain.(SubMain.java:8)
at com.jd.o2o.substring.SubMain.main(SubMain.java:18)*/ |
其他参考文章:http://blog.csdn.net/longzuyu...,
http://www.wtoutiao.com/p/jfc...