为什么从命令行运行可执行jar比使用Eclipse运行的同一个项目使用更多的ram?

时间:2012-12-19 21:22:03

标签: java eclipse

为什么从命令行运行可执行jar会使用更多的RAM - 在我的情况下大约多7倍 - 比从Eclipse运行的同一个项目?

在开发项目时,我从Eclipse运行应用程序(Run-> Run),它使用了大约60mb(我看了刚刚创建的javaw.exe进程)的ram,而如果我创建了一个可执行的JAR并从中运行它命令行(Windows)ram的使用量约为450mb。此外,从命令行运行时,ram使用量变化的幅度大于Eclipse的Run-> Run。

2 个答案:

答案 0 :(得分:3)

这可能与Eclipse启动应用程序的JVM设置有关。在启动Jar时,Java将最好地猜测在内存方面使用的设置。您可以在控制台上更改使用java命令所使用的内存大小:

java -Xms64m -Xmx256m -cp your.jar

-Xms??m以mb为单位设置最小堆大小 -Xmx??m以mb为单位设置最大堆大小。

Java可能会自动选择更大的堆大小,因为它不受eclipse的支配。

答案 1 :(得分:2)

在eclipse中,它必须与其他服务/应用程序共享内存。但是在命令行上它没有任何限制。在命令行上,您还可以通过启动应用程序来限制ram。 您可以通过执行此操作来限制它

java -Xmx256M -Xms256M -cp /*.jar