【发布时间】:2013-07-23 23:22:40
【问题描述】:
当我在 IDE 中指定 VM 参数时(我在此实例中使用 NetBeans),我是否认为这些参数仅在代码通过 IDE 本身运行时才传递?
基本上,我想指定当我的程序运行时,VM 的最小/初始堆大小为 2Gb。我可以使用 -Xms2048m 命令执行此操作,但我想知道是否有某种方法可以实现此操作,而无需键入命令(为了客户)。
即使我在 NetBeans 和 Launch4J 中设置了 VM 参数(我将 JAR 包装到一个 EXE 文件中),当程序启动并输出运行时的总内存大小时,它总是给出 ~120Mb。
我错过了什么?
编辑:我使用...输出总内存大小
int mb = 1024 * 1024;
System.out.println("Max Memory: " + Runtime.getRuntime().totalMemory() / mb);
编辑 2:不能创建一个不带参数的初始化程序,而是使用相关的 VM 参数启动主程序吗?比如……
public class Main {
public static void main(String[] args) {
String execName = new File(new File("").getAbsolutePath()) + "\\Program.exe";
Runtime rt = Runtime.getRuntime();
rt.exec("java -Xms2048m -Xmx4096m -jar " + execName);
}
}
【问题讨论】:
标签: java memory jvm arguments heap-memory