使用Xms和Xmx管理Java内存

使用Xms和Xmx管理Java内存,java,memory,jconsole,Java,Memory,Jconsole,我有一个作为守护进程运行的java应用程序。最初,我发现大约一周后,应用程序会抛出内存不足错误。我研究发现,通过在启动时设置-Xms和-Xmx标志来指定应用程序将拥有多少内存,我可以管理内存并避免问题。这最终解决了我的记忆问题 然而,后来,我发现应用程序在一些只有1GB内存的机器上导致了性能问题,1GB内存是我为-Xmx分配的内存量。因此java应用程序占用了所有可用内存 因此,使用jconsole,我将确定应用程序的运行速度约为150mb。因此,使用这些信息,我将-Xmx值降低到300mb。认

我有一个作为守护进程运行的java应用程序。最初,我发现大约一周后,应用程序会抛出内存不足错误。我研究发现,通过在启动时设置-Xms和-Xmx标志来指定应用程序将拥有多少内存,我可以管理内存并避免问题。这最终解决了我的记忆问题

然而,后来,我发现应用程序在一些只有1GB内存的机器上导致了性能问题,1GB内存是我为-Xmx分配的内存量。因此java应用程序占用了所有可用内存

因此,使用jconsole,我将确定应用程序的运行速度约为150mb。因此,使用这些信息,我将-Xmx值降低到300mb。认为这将是足够的。但后来我发现应用程序只使用了大约15mb。为什么?为什么应用程序在分配1GB时使用150mb,而在分配300mb时仅使用15mb


那么我该如何去弄清楚我应该使用什么呢?

这是一个可能的复制品这是一个可能的复制品