我正在编写一个 java 程序,在 windows 中使用 eclipse 生成前 5000 万个素数(eratosthenes 筛)。
package first;
import java.util.Arrays;
public class primegen {
private static int[] generatePrimes(int max) {
boolean[] isComposite = new boolean[max + 1];
for (int i = 2; i * i <= max; i++) {
if (!isComposite [i]) {
for (int j = i; i * j <= max; j++) {
isComposite [i*j] = true;
}
}
}
int numPrimes = 0;
for (int i = 2; i <= max; i++) {
if (!isComposite [i]) numPrimes++;
}
int [] primes = new int [numPrimes];
int index = 0;
for (int i = 2; i <= max; i++) {
if (!isComposite [i]) primes [index++] = i;
}
return primes;
}
//The following snippet of code is to check the heapsize
public static void main(String[] args) {
long heapsize=Runtime.getRuntime().totalMemory();
System.out.println("heapsize is::"+heapsize);
System.out.println(generatePrimes(982451653)[4]);
}
}
堆空间的输出是:
heapsize is::66584576
它给出了以下错误:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at first.primegen.generatePrimes(primegen.java:7)
at first.primegen.main(primegen.java:30)
我发现 JVM 有一些 -xmx 命令。我在哪里输入该命令以及使用该命令设置的适当堆大小应该是多少?
我的机器上有 4 GB 的 RAM(64 位 Windows 7)