的我故意创建了以下类导致内存不足的错误逼出来的java内存..不一致的java行为
public class Test1
{
public static void main(String[] args)
{
StringBuffer sb = new StringBuffer();
while(true)
{
Test1 a = new Test1();
sb.append(a.toString());
}
}
}
的如我所料这上面的类失败,我想要的东西......
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
at java.lang.AbstractStringBuilder.append(Unknown Source)
at java.lang.StringBuffer.append(Unknown Source)
at Test1.main(Test1.java:10)
但这:
public class Test1
{
public static void main(String[] args)
{
StringBuffer sb = new StringBuffer();
while(true)
{
Test1 a = new Test1();
System.out.println(sb.toString());
sb.append(a.toString());
}
}
}
不会崩溃。运行良好,通过在控制台上反复打印对象地址。
我的问题是:
简单的SOP有什么不同?
SOP只是推迟了崩溃。 – Ishtar
@Ishtar实际上没有。那么在某些时候它可能会,但我监控了它很长的一段时间,并没有崩溃。 – Ayusman
@Ayusman:你的JVM有多少内存?你是否也观察过内存消耗,例如'jconsole'? –