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

我使用的是Azure上具有7GB内存的Windows 2012服务器。
我已经在计算机上安装了64位Java。

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

-Xmx6g

但是,当我运行jar时,它遇到了Java OutOfMemory异常。我已经在任务管理器运行时对其进行了检查,它显示出用于该进程的内存峰值约为2GB,并且从未超过该值。尽管我将heapsize设置为6GB。

在我使用8GM ram的Windows 7计算机的本地PC上,我没有遇到此问题。

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

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

它给了我以下内容:

Windows Server 2012

64
1670381568

本地电脑

64
6681001984

为什么Windows Server无法将全部内存分配给JVM?有什么我想念的地方吗?

参考方案

这对我来说真是愚蠢而愚蠢,但我想出了原因。

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

即代替

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

我应该用过

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

Java StackTrace不显示行中实际的null在哪里 - java

以下异常:Exception in thread "main" java.lang.NullPointerException at javaapplication7.App.main(App.java:8) Java Result: 1 从代码抛出:Object o = n1.getObj().getObj().getObj().getO…

休眠还是Application Server JPA? - java

我在生产中使用Glassfish,在测试中使用OpenEJB。我正在使用JPA 1.0。我使用的是Hibernate,但没有特定的Hibernate功能,只有标准的JPA。休眠在这个集合中是多余的,应该删除,对吗? java参考方案 OpenEJB和Glassfish均提供JPA实现。因此,要运行您的应用程序,您不需要休眠。但是,在某些特殊情况下,JPA实现…

寻找FTP Server Java库 - java

Improve this question 我正在寻找Java FTP服务器库,该库可以用数据库数据代替DAL。到目前为止,我已经看到在 Apache FtpServer 中有一个选项可以使用FTPLet容器拦截某些命令,但是它缺少最重要的命令,例如LIST。 参考方案 在Apache FtpServer中,您可以使用Ftplet拦截任何命令,包括LIST。…

可以在没有操作系统的情况下运行Java程序吗? - java

我知道所有Java程序都由JVM执行。这使Java与所有操作系统兼容(一次编写,可在任何地方运行)。但是我可以在没有操作系统的情况下运行Java程序吗?也许只运行JVM?并且,如果可能,功能是否会受到任何影响?注意:我的主要问题是,java程序可以直接在硬件上运行(通过JVM)吗?我可以在计算机中“启动”任何低级别的JVM吗? java大神给出的解决方案 实…

Java堆设置 - java

在阅读有关性能调整的一些说明时,在设置内存大小时确实注意到了一个建议:Java应用程序应该将初始永久生成大小和最大永久生成大小调整为相同的值,因为增加或缩小永久生成空间需要完整的GC。在设置堆大小时也给出了类似的建议,即-Xmx=-Xms。我的问题是,那么为什么我们要完全设置-Xms? 也, 如果我对-Xmx和-Xms使用不同的值,而不是当我对-Xmx和-X…