对于具有专用内存的应用程序,最小堆大小小于最大堆大小是否有意义?(-Xms、-Xmx 参数)这些是 docker 容器中的后端服务器。
或者最小和最大堆相等是否理想?
就像在堆中不使用时是否有理由将一些内存返回给系统?
假设没有其他进程预期在后台执行。服务器操作系统之外的东西。
对于具有专用内存的应用程序,最小堆大小小于最大堆大小是否有意义?(-Xms、-Xmx 参数)这些是 docker 容器中的后端服务器。
或者最小和最大堆相等是否理想?
就像在堆中不使用时是否有理由将一些内存返回给系统?
假设没有其他进程预期在后台执行。服务器操作系统之外的东西。
根据文档:
通过从虚拟机中删除最重要的大小决定,将
-Xms和设置为相同的值可以提高可预测性。-Xmx但是,如果您做出错误的选择,虚拟机将无法进行补偿。
通常,在较大的堆上,GC 运行的频率较低。但是在某些情况下,较大的堆可能会导致性能下降(例如,为对象扫描内存的库)。同样对于较大的堆,启动时间会稍长,但无需在运行时调整堆大小。
大多数情况下,差异是如此之小,以至于没有人可以识别。但找到最佳 jvm 配置的最佳方法始终是测量。有很多衡量性能、内存等的好工具,例如 JHM、JMC、VisualVm 等。每个应用程序都不同,因此没有共同的最佳选择。