Exception in thread "main" java.lang.OutOfMemoryError: Java heap space是什么错误

2024-11-23 09:36:08
推荐回答(5个)
回答(1):

内存溢出了 可能多个类声明其他类的对象的时候形成递归了?
加个断点调试下,看看运行过程。
我帮你改好了:
StringBuffer str1 = new StringBuffer("--+-++-+");
for (int i = 0; i < 8; i++) {
for (int j = 1; j < i + 10; j++) {
System.out.print(" ");
}
System.out.println(str1);
for (int a = 0; a < str1.length() - 1; a++) {
if (str1.charAt(a) == str1.charAt(a + 1))
str1.replace(a, a+1, "+");//第二个参数改为a+1
else
str1.replace(a, a+1, "-");//第二个参数改为a+1
}

}
运行结果:

----++-+
+++-+--+
++---+-+
+-++---+

回答(2):

private static void triangle() {
StringBuffer str1=new StringBuffer("--+-++-+");
for(int i=0;i<8;i++){
for(int j=1;j System.out.print(" ");
}
System.out.println(str1);
for(int a=0;a if(str1.charAt(a)==str1.charAt(a+1)){
//你原来的地方死循环了,我不知道你想实现什么但是问题就这,死循环造成内存溢出,你往这改就是了
str1.replace(a, a + 1, "+");
}
else {
//你原来的地方死循环了,我不知道你想实现什么但是问题就这,死循环造成内存溢出,你往这改就是了
str1.replace(a, a + 1, "-");
}

}
}
}

回答(3):

JDK 5.0 Documentation中说:
……从指定的 start 处开始,一直索引到 end - 1 处的字符……
参数:
start - 起始索引 (包含)。
end - 结束索引 (不包含)。
str - 将替换原有内容的字符串。

只要将程序代码中的 str1.replace(a, a, String str);

修改一点点使之成为 str1.replace(a, a+1, String str);

回答(4):

for(int a=0;aif(str1.charAt(a)==str1.charAt(a+1))
str1.replace(a, a, "+");
else
str1.replace(a, a, "-");
}
你这str1.replace(),改变了str1的长度,使得a

回答(5):

重启下服务器就好了吧。
内存给的少了的原因吧。