1

对于具有专用内存的应用程序,最小堆大小小于最大堆大小是否有意义?(-Xms、-Xmx 参数)这些是 docker 容器中的后端服务器。

或者最小和最大堆相等是否理想?

就像在堆中不使用时是否有理由将一些内存返回给系统?

假设没有其他进程预期在后台执行。服务器操作系统之外的东西。

4

1 回答 1

3

根据文档:

通过从虚拟机中删除最重要的大小决定,将-Xms和设置为相同的值可以提高可预测性。-Xmx但是,如果您做出错误的选择,虚拟机将无法进行补偿。

通常,在较大的堆上,GC 运行的频率较低。但是在某些情况下,较大的堆可能会导致性能下降(例如,为对象扫描内存的库)。同样对于较大的堆,启动时间会稍长,但无需在运行时调整堆大小。

大多数情况下,差异是如此之小,以至于没有人可以识别。但找到最佳 jvm 配置的最佳方法始终是测量。有很多衡量性能、内存等的好工具,例如 JHM、JMC、VisualVm 等。每个应用程序都不同,因此没有共同的最佳选择。

于 2020-06-22T11:12:43.957 回答