繁体   English   中英

JVM 64在Azure上的Windows Server 2012上最多使用2GB

[英]JVM 64 is using a maximum of 2GB on Windows Server 2012 on Azure

我正在使用Azure上的7GB内存的Windows 2012服务器。 我在机器上安装了64位java。

运行jvm时,我通过参数将最大堆大小设置为4GB

-Xmx6g

但是,当我运行我的jar时,会遇到java OutOfMemory异常。 我在任务管理器运行时检查了它,它显示用于进程的内存峰值大约为2GB,并且永远不会超过它。 尽管我设置了6GB的大小。

在我的本地PC上,我使用的是带有8GM内存的Windows 7机器,我没有遇到这个问题。

我在我的java应用程序中使用了以下命令

System.out.println(System.getProperty("sun.arch.data.model"));
System.out.println("Max Memory: " + Runtime.getRuntime().maxMemory());

它给了我以下内容:

Windows Server 2012

64
1670381568

本地PC

64
6681001984

为什么Windows Server没有为JVM分配全部内存? 有什么设置让我失踪吗?

这对我来说真是愚蠢和愚蠢,但我找出了它的原因。

当我需要在java命令之后放置内存参数时,我已将内存参数放在我的整个命令行的末尾。

即代替

java -jar "myapp.jar" "myArgs" -Xmx6g 

我应该用过

java -Xmx6g -jar "myapp.jar" "myArgs"

不考虑-Xmx参数,或者不允许进程从OS获取更多RAM。

我的建议:

注意:我会使用评论,因为这实际上不是一个解决方案,但我还没有得分。 如果这不是正确的贡献方式,我道歉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM