为什么从命令行运行的可执行 jar 比从 Eclipse 运行的同一个项目使用更多的 RAM(在我的情况下大约是 7 倍)?
在开发项目时,我从 Eclipse(运行->运行)运行应用程序,它使用了大约 60mb(我查看了刚刚创建的 javaw.exe 进程)的内存,而如果我创建一个可执行的 JAR 并从命令行运行它(Windows ) 内存使用量约为 450mb。此外,从命令行运行时 ram 使用变化的幅度更大,而不是从 Eclipse 的 Run->Run 运行。
这可能与 Eclipse 启动应用程序时使用的 JVM 设置有关。启动 Jar 时,Java 会根据内存做出最好的猜测。java
您可以使用控制台上的命令更改使用的内存大小:
java -Xms64m -Xmx256m -cp your.jar
-Xms??m
以 mb 为单位设置最小堆大小。
-Xmx??m
以 mb 为单位设置最大堆大小。
Java 可能会自动选择更大的堆大小,因为它不是由 eclipse 决定的。
在 Eclipse 中,它必须与其他服务/应用程序共享 ram。但是在命令行上它没有限制。在命令行上,您还可以通过启动应用程序来限制 ram。你可以通过这样做来限制它
java -Xmx256M -Xms256M -cp /*.jar