用不同的方式调用一个 jar 会产生很大的内存差异

Calling a jar with different ways produce big memory Difference

我制作了一个java程序并将其打包到一个文件夹中(名为文件夹),然后制作了一个我用来调用的批处理文件jar 文件。也进去添加了Java8_25 JRE.

文件夹有(批处理文件,Java8_25 JRE,program.jar)。 以下是我如何从批处理文件调用程序:

1.Way

开始 "C:/Program Files (x86)/Folder/Java8/lib/javaw.exe -jar" "C:/Program Files (x86)/Folder/program.jar"

2.Way

开始Java8/lib/javaw.exe -jar program.jar

区别就足够了 big.Also 我看到调用程序的第一种方式是 64 位,第二种方式是 32 位,尽管我用相同的 Java8 JRE 打开它。

1)为什么第一种方式调用的是64位而不是32位?

2)为什么内存差异这么大?

我也阅读了与此相关的问题,我认为 64 位 java 比 32 位占用更多内存?但为什么会发生在这里。

(如果它 helps:Also 我有 64 位 OS 并且当我进入 eclipse 时更喜欢 java 32 位)

内存差异完全是JVM的差异,虽然可能是因为32位是"client"模式。 HotSpot 始终以 "server" 模式运行 64 位,该模式针对长 运行 和高 GC 程序(如 Web 服务器)进行了调整。

您肯定没有为两次运行使用相同的 JVM; "x86" 目录是 Windows 将 32 位程序放在 64 位 OS 上的地方。

这将启动 64 位 java:

start Java8/lib/javaw.exe -jar program.jar 

这将启动 32 位 java:

start "C:/Program Files (x86)/Folder/Java8/lib/javaw.exe -jar" "C:/Program Files (x86)/Folder/program.jar"

这解释了内存中的差异:出于性能原因,所有适合 32 位的小值都存储在 64 位内存中。因此内存占用较大。