2 人体工程学

内容

除非您知道需要比默认最大堆大小更大的堆,否则不要为堆选择最大值。选择一个对您的应用程序足够的吞吐量目标。

堆将增长或缩小到能够支持所选吞吐量目标的大小。应用程序行为的变化可能导致堆增长或缩小。例如,如果应用程序开始以更高的速率分配内存,堆将增长以保持相同的吞吐量。

如果堆增长到最大尺寸,但未达到吞吐量目标,则最大堆大小对于吞吐量目标来说太小了。将最大堆大小设置为接近平台上的总物理内存但不会导致应用程序交换的值。再次执行应用程序。如果仍未达到吞吐量目标,则应用程序时间的目标对于平台上可用的内存来说太高了。

如果可以达到吞吐量目标,但存在过长的暂停时间,则选择一个最大暂停时间目标。选择最大暂停时间目标可能意味着无法实现吞吐量目标,因此选择对应用程序而言是可接受的折衷值。

堆的大小会在垃圾收集器试图满足竞争目标时发生波动是很典型的。即使应用程序已经达到稳定状态,这也是真实的。实现吞吐量目标的压力(可能需要更大的堆)与实现最大暂停时间和最小占用空间的目标相互竞争(这两者可能需要更小的堆)。


总结
文章总结了Java虚拟机中的垃圾收集机制。通过选择合适的堆大小和调整垃圾收集器参数,可以优化性能。文章介绍了垃圾收集的基本原理,包括对象的生命周期、分代收集、最大暂停时间目标等概念。通过调整堆大小和垃圾收集器参数,可以平衡吞吐量、暂停时间、内存占用等性能指标。文章还提到了垃圾收集的性能指标,如吞吐量和暂停时间,以及如何通过命令行选项来输出垃圾收集信息。最后指出,选择合适的垃圾收集器和调整参数取决于应用程序的内存使用方式和用户需求。