次のプログラムを実行すると(で実行"java -Xmx151M -cp . com.some.package.xmlfun.Main"
):
package com.some.package.xmlfun;
public class Main {
public static void main(String [] args) {
char [] chars = new char[50 * 1024 * 1024];
}
}
最大メモリを少なくとも 151M (-Xmx151M) に増やす必要があります。したがって、配列サイズを増やすと、制限を増やす必要があります。
- 50 * 1024 * 1024 -> -Xmx151M
- 100 * 1024 * 1024 -> -Xmx301M
- 150 * 1024 * 1024 -> -Xmx451M
ドキュメントが示唆するように、Java が 1 文字あたり 2 バイトではなく 3 バイトを必要とするように見えるのはなぜですか?
また、同様に long の配列を作成すると、long ごとに 8 ではなく 12 バイトが必要なようです。int では、4 ではなく 6 バイトが必要です。一般的には、array_size * element_size * 1.5 が必要なようです。
でコンパイル- javac \com\som\package\xmlfun\\*java
で実行- java -Xmx151M -cp . com.some.package.xmlfun.Main