个人感觉就是,不断的切子串,造成内存装不下了造成的呗,不过一般不会反生这种情况吧,代码如下:
- /*
- subString出现内存溢出,什么原理,怎么解决
- 思路:
- 1,个人感觉就是不断的切子串,很多很多字符串对象,导致内存溢出的呗。
- 2,循环试试, 要保证字符串的不相同,往集合中不断添加
- */
- import java.util.ArrayList;
- class SubStringTest
- {
- public static void main(String[] args)
- {
- ArrayList<String> al = new ArrayList<String>();
- StringBuffer sb = new StringBuffer();
- int x = 0;
- while (x<6000)
- {
- sb.append(x++);//不断的添加字符,形成一个足够长的字符串
- }
- String s = sb.toString();
- //System.out.println(s);
- int y = 0;
- while (y<s.length())
- {
- al.add(s.substring(y++));//不断的切子串,存入集合中
- }
- System.out.println("Hello World!");
- }
- }
复制代码
不知道这个错误是不是楼主想要的,
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:2694)
at java.lang.String.<init>(String.java:203)
at java.lang.String.substring(String.java:1877)
at SubStringTest.main(SubStringTest.java:28) |