Wus*_*uhn 5 java memory jvm jvm-arguments
可能重复:
是否可以动态更改最大Java堆大小?
我知道Java启动器有一个XMX选项,但是有一些预处理指令可以做到这一点(所以运行我的代码的所有计算机都会增加它们的堆).
就像现在一样,java.exe只能达到~280MB max(崩溃之前) - 这是正常的吗?
“启动一个具有更多内存的新进程”可以在代码中完成吗?
是的。请参阅这个简单的示例。
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)