読者です 読者をやめる 読者になる 読者になる

HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

OutOfMemoryError発生時のエラーメッセージの変遷

なぜか唐突に(謎)。わざわざ準備するのは面倒なので、手元にあるものだけ確認。
まず、OutOfMemoryErrorを引き起こすためのコード。

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.LinkedList;
import java.util.List;

public class Main {

    // 長さ 60 の文字列を生成するためのformatter
    private static NumberFormat nf
        = new DecimalFormat("000000000000000000000000000000000000000000000000000000000000");

    public static void main(String[] args) {
        System.err.println(System.getProperty("java.version"));
        List list = new LinkedList();
        long n = 0;
        for (;true; ++n) {
            String s = nf.format(n);
            list.add(s);
        }
    }

}

SunのJ2SDK 1.4.2_18。

1.4.2_18
java.lang.OutOfMemoryError
Exception in thread "main" 

SunのJDK 5.0 Update 11。

1.5.0_11
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

SunのJDK 6 Update 1。

1.6.0_01
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:2882)
	at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
	at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
	at java.lang.StringBuffer.append(StringBuffer.java:320)
	at java.text.DecimalFormat.subformat(DecimalFormat.java:1060)
	at java.text.DecimalFormat.format(DecimalFormat.java:674)
	at java.text.DecimalFormat.format(DecimalFormat.java:608)
	at java.text.NumberFormat.format(NumberFormat.java:280)
	at Main.main(Main.java:25)

IBMJDK 5.0 (DB2 Express-C v9.1.2 に同梱されているもの)。

1.5.0
JVMDUMP006I Processing Dump Event "uncaught", detail "java/lang/OutOfMemoryError" - Please Wait.
JVMDUMP007I JVM Requesting Snap Dump using 'c:\work\Snap0001.20090827.220209.8712.trc'
JVMDUMP010I Snap Dump written to c:\work\Snap0001.20090827.220209.8712.trc
JVMDUMP007I JVM Requesting Heap Dump using 'c:\work\heapdump.20090827.220209.8712.phd'
JVMDUMP010I Heap Dump written to c:\work\heapdump.20090827.220209.8712.phd
JVMDUMP007I JVM Requesting Java Dump using 'c:\work\javacore.20090827.220209.8712.txt'
JVMDUMP012E Error in Java Dump: c:\work\javacore.20090827.220209.8712.txt
JVMDUMP013I Processed Dump Event "uncaught", detail "java/lang/OutOfMemoryError".
Exception in thread "main" java.lang.OutOfMemoryError
    at java.lang.StringBuffer.ensureCapacityImpl(StringBuffer.java:398)
    at java.lang.StringBuffer.append(StringBuffer.java:154)
    at java.text.DecimalFormat.subformat(DecimalFormat.java:1050)
    at java.text.DecimalFormat.format(DecimalFormat.java:677)
    at java.text.DecimalFormat.format(DecimalFormat.java:612)
    at java.text.NumberFormat.format(NumberFormat.java:274)
    at Main.main(Main.java:25)

IBMJDK 5.0 (DB2 Express-C v9.5.2 に同梱されているもの)。

1.5.0
JVMDUMP006I Processing Dump Event "systhrow", detail "java/lang/OutOfMemoryError" - Please Wait.
JVMDUMP007I JVM Requesting Snap Dump using 'c:\work\Snap0001.20090827.132355.1576.trc'
JVMDUMP010I Snap Dump written to c:\work\Snap0001.20090827.132355.1576.trc
JVMDUMP007I JVM Requesting Heap Dump using 'c:\work\heapdump.20090827.132355.1576.phd'
JVMDUMP010I Heap Dump written to c:\work\heapdump.20090827.132355.1576.phd
JVMDUMP007I JVM Requesting Java Dump using 'c:\work\javacore.20090827.132355.1576.txt'
JVMDUMP010I Java Dump written to c:\work\javacore.20090827.132355.1576.txt
JVMDUMP013I Processed Dump Event "systhrow", detail "java/lang/OutOfMemoryError".
Exception in thread "main" java.lang.OutOfMemoryError
    at java.util.LinkedList.addBefore(LinkedList.java:649)
    at java.util.LinkedList.add(LinkedList.java:211)
    at Main.main(Main.java:26)

IBMJDK 6 (DB2 Express-C v9.7.0 に同梱されているもの)。

1.6.0
JVMDUMP006I ダンプ・イベント "systhrow"、詳細 "java/lang/OutOfMemoryError" を処理しています - お待ちください。
JVMDUMP007I JVM は Snap ダンプ ('c:\work\Snap.20090827.222915.9628.0001.trc' を使用する) を要求しています
JVMDUMP010I Snap ダンプは c:\work\Snap.20090827.222915.9628.0001.trc に書き込まれました
JVMDUMP007I JVM は Heap ダンプ ('c:\work\heapdump.20090827.222915.9628.0002.phd' を使用する) を要求しています
JVMDUMP010I Heap ダンプは c:\work\heapdump.20090827.222915.9628.0002.phd に書き込まれました
JVMDUMP007I JVM は Java ダンプ ('c:\work\javacore.20090827.222915.9628.0003.txt' を使用する) を要求しています
JVMDUMP010I Java ダンプは c:\work\javacore.20090827.222915.9628.0003.txt に書き込まれました
JVMDUMP013I ダンプ・イベント "systhrow"、詳細 "java/lang/OutOfMemoryError" を処理しました。
Exception in thread "main" java.lang.OutOfMemoryError
    at java.lang.StringBuffer.ensureCapacityImpl(StringBuffer.java:335)
    at java.lang.StringBuffer.append(StringBuffer.java:128)
    at java.text.DecimalFormat.subformat(DecimalFormat.java:877)
    at java.text.DecimalFormat.format(DecimalFormat.java:685)
    at java.text.DecimalFormat.format(DecimalFormat.java:619)
    at java.text.NumberFormat.format(NumberFormat.java:291)
    at Main.main(Main.java:25)