有没有办法在代码本身中增加Java堆空间?

Wus*_*uhn 5 java memory jvm jvm-arguments

可能重复:
是否可以动态更改最大Java堆大小?

我知道Java启动器有一个XMX选项,但是有一些预处理指令可以做到这一点(所以运行我的代码的所有计算机都会增加它们的堆).

就像现在一样,java.exe只能达到~280MB max(崩溃之前) - 这是正常的吗?

And*_*son 1

“启动一个具有更多内存的新进程”可以在代码中完成吗?

是的。请参阅这个简单的示例。

import java.awt.EventQueue;
import javax.swing.JOptionPane;
import java.io.File;

class BigMemory {

    public static void main(String[] args) throws Exception {
        if (args.length==0) {
            ProcessBuilder pb = new ProcessBuilder(
                "java",
                "-Xmx1024m",
                "BigMemory",
                "anArgument"
                );
            pb.directory(new File("."));
            Process process = pb.start();
            process.waitFor();
            System.out.println("Exit value: " + process.exitValue());
        } else {
            Runnable r = new Runnable() {
                public void run() {
                    JOptionPane.showMessageDialog(
                        null,
                        "Max Memory: " +
                        Runtime.getRuntime().maxMemory() +
                        " bytes.");
                }
            };
            EventQueue.invokeLater(r);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)