我有一个关于 Java 堆空间的问题。
我有一个程序,它使用地理工具从街道网络创建图表。我用它做了一些事情,但我遇到了 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)