Java 最大jvm堆的大小未达到或接近机器上的最大物理内存的原因是什么?

Java 最大jvm堆的大小未达到或接近机器上的最大物理内存的原因是什么?,java,performance,jvm-hotspot,Java,Performance,Jvm Hotspot,我有一台64位机器,理论上地址空间是2^64字节,它有32G的物理RAM 这是一台服务器规模的机器,具有16个核心,是一台生产服务器 由于没有其他正在运行的进程会消耗大量内存,而且服务器jvm是唯一正在运行的应用程序,因此有没有理由不将jvm堆设置为非常大的数量 我看到它被设置为少于10场演出,没有任何解释,我能想到这可能是 正如我之前在帖子中提到的: 我知道内核、缓存和其他进程需要共享RAM。但是,除了任何其他进程和操作系统本机内容之外,没有其他事情在进行。 此机器是一台生产机器,仅用于此特定

我有一台64位机器,理论上地址空间是2^64字节,它有32G的物理RAM

这是一台服务器规模的机器,具有16个核心,是一台生产服务器

由于没有其他正在运行的进程会消耗大量内存,而且服务器jvm是唯一正在运行的应用程序,因此有没有理由不将jvm堆设置为非常大的数量

我看到它被设置为少于10场演出,没有任何解释,我能想到这可能是

正如我之前在帖子中提到的: 我知道内核、缓存和其他进程需要共享RAM。但是,除了任何其他进程和操作系统本机内容之外,没有其他事情在进行。 此机器是一台生产机器,仅用于此特定jvm

是否有任何理由不设置为20 gigs/32 g(物理ram)之类的值

从下面的评论来看,除了需要快速失败之外,似乎没有其他原因,
感谢您的输入,因为操作系统还需要RAM,用于缓存、缓冲区、守护进程(如syslogd、页表、内核数据结构等)


而且,JVM设计者不知道在JVM启动后您可能想要启动哪些其他应用程序。因此,JVM在默认情况下不占用所有RAM是明智的。

根据我自己的经验,一台物理机器上通常有多个JVM,至少对于典型用户来说是这样。他们中的大多数人只需要1-2个工作岗位。因此,我不会感到惊讶,这导致了您观察到的默认值。人们通常会降低它,因为应用程序在某种“失控”状态下只会使用大量的RAM,他们希望它尽早失败,而不是占用RAM,然后再失败。在您的特定情况下,考虑到您的假设是有效的,而且更重要的是,您可以选择提高限制。在大多数其他情况下,人们会问ijit的虚拟机大小是多少,并耗尽了我所有的资源&*^*&*(内存。此外,经常会有JVM本身以外的东西在运行。因此,64位机器上有32G;这对于现在的开发工作站来说是完全合理的。JVM需要与桌面环境、IDE、web浏览器,可能还有数据库共享……最好不要假设它是它是整个机器,并让用户指定是否这样做。(此外,某些系统,如Neo4J,无论如何都会在JVM堆外使用大量RAM。)JVM本身需要物理内存来记账,因此您不能将所有RAM都分配给Java堆,您必须至少为JVM留些东西。