Java 为什么从命令行运行的可执行jar比从Eclipse运行的同一项目使用更多的ram?
为什么从命令行运行的可执行jar要比从Eclipse运行的同一个项目使用更多的RAM(在我的例子中大约是7倍)Java 为什么从命令行运行的可执行jar比从Eclipse运行的同一项目使用更多的ram?,java,eclipse,Java,Eclipse,为什么从命令行运行的可执行jar要比从Eclipse运行的同一个项目使用更多的RAM(在我的例子中大约是7倍) 在开发项目时,我从Eclipse(run->run)运行应用程序,它使用了大约60mb的ram(我查看了刚刚创建的javaw.exe进程),而如果我创建一个可执行JAR并从命令行(Windows)运行它,ram的使用量约为450mb。此外,从命令行运行时,ram使用变化的幅度比从Eclipse的run->run运行时更大。在Eclipse中,它必须与其他服务/应用程序共享ram。但在命
在开发项目时,我从Eclipse(run->run)运行应用程序,它使用了大约60mb的ram(我查看了刚刚创建的javaw.exe进程),而如果我创建一个可执行JAR并从命令行(Windows)运行它,ram的使用量约为450mb。此外,从命令行运行时,ram使用变化的幅度比从Eclipse的run->run运行时更大。在Eclipse中,它必须与其他服务/应用程序共享ram。但在命令行上它没有限制。在命令行中,您还可以通过启动应用程序来限制ram。 你可以通过这样做来限制它
java -Xmx256M -Xms256M -cp /*.jar
这可能与Eclipse启动应用程序时使用的JVM设置有关。在启动Jar时,Java将对内存使用的设置进行最佳猜测。您可以通过控制台上的
java
命令更改使用的内存大小:
java -Xms64m -Xmx256m -cp your.jar
-Xms??m
以mb为单位设置最小堆大小。-Xmx??m
以mb为单位设置最大堆大小
Java可能会自动选择一个更大的堆大小,因为它不是由eclipse指定的。是的,我想可能是这样的,但是数学计算不正确。Eclipse本身使用了190mb+60mb,用于我的应用程序==大约250,这肯定不接近450。也许还有其他原因?没有其他解释。尝试使用java-Xmx256M-Xms256M-cp/*.jar启动应用程序,您会发现它将超出分配的限制。如果您满意,请接受答案并投赞成票。感谢从Eclipse启动时,应用程序通常会获得自己的JVM,因此它与从命令行启动时一样。然而。Eclipse通常会将初始堆设置为8M,而命令行可能有不同的默认值(我的机器默认为64M)。可以使用“jps-v”从命令行查看流程和启动参数