String str = "hello world ";
int i=0;
while(true) {
i++;
System.out.println("=================:"+i);
str = str+str;
}=================:16
=================:17
=================:18
=================:19
=================:20
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:3209)
at java.lang.String.<init>(String.java:216)
at java.lang.StringBuilder.toString(StringBuilder.java:430)
at com.iss.util.Demo.main(Demo.java:12)
int i=0;
while(true) {
i++;
System.out.println("=================:"+i);
str = str+str;
}=================:16
=================:17
=================:18
=================:19
=================:20
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:3209)
at java.lang.String.<init>(String.java:216)
at java.lang.StringBuilder.toString(StringBuilder.java:430)
at com.iss.util.Demo.main(Demo.java:12)
解决方案 »
- 用的是1.6.0的JDK用getText().trim提示使用了过时的方式
- 如何一下拿到一个类中所有常量?
- 应用软件中异常的详细信息是怎样的?
- 没在类中定义匿名内部类为什么编译出现**$1.class文件
- 除了在main()方法可以调用new自己,在其它地方可以new自己吗?
- 介绍几个学习java的网站?????????
- 遇到麻烦了,如何把含有<br> 和 的字符串转成 含有回车和空白符的字符串返回?
- 这个while loop我有点搞不懂,大家帮我看看!谢谢!(20分)
- 关于时间的问题!很简单!
- 一个小东东?
- 计算日期
- 可能从数据库得到三种格式的时间字符串,如何使用系统自带类统一格式化为yyyy-MM-dd HH:mm:ss格式的时间
你这段程序我就能执行25次
Integer.MAX_VALUE最大大概21亿,为何我对几千万长度的字符串进行操作:比如加上一个字符串。就会出现此错误?
你的字符串长度是11.算下来才22M。
刚才试了下jvm内存64M的时候 最多到20.调到1300M才勉强到25,看来String很占内存啊。
最后结果是 2 的 20 次方个“hello, world”,就是 1M个 hello, world
每个 hello, world 是 12个字符,24个字节
那么这个字符串会占用 24M 内存不知道JVM内部怎么做,但是估计在 jvm 内部会要求一片连续的内存用于存放字符串这么大的字符串,在现实中基本上不会使用到的,我一本750多页32开的书,字数约1000千字,差不多是1M了,楼主这个字符串,如果印刷成书,差不多是12本700页32开的书了。这么多内容,用一个字符串变量存储????