Java ヒープ領域について質問があります。
geotools を使用してストリート ネットワークからグラフを作成するプログラムがあります。私はそれでいくつかのことをしていますが、OutOfMemoryError に遭遇しましたが、その理由はわかりません。次のコードを使用して、空きメモリの量を取得します。
Runtime rt = Runtime.getRuntime();
long maxMb = rt.freeMemory()/(1024*1024);
System.out.println("Your JVM has " + maxMb + " MB of memory left");
そして、プログラムを実行すると、十分なメモリがあるようです (出力を参照)。このコンソール出力は、OutOfMemory エラーが発生する直前に行われます。それで、何がうまくいかないのですか?Java ヒープ領域を拡大しても、OutOfMemory エラーが発生します (ただし、1461 MB が残っています)。なぜそれが起こるのか分かりませんか?何か案は?
Your JVM has 981 MB of memory left
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.grow(Unknown Source)
at java.util.ArrayList.ensureCapacityInternal(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at masterthesis.datastructures.Stroke.addStrokeSegment(Stroke.java:78)
at masterthesis.algorithms.StrokeBuilder.buildStroke(StrokeBuilder.java:145)
at org.geotools.test.Main.main(Main.java:109)