来自Oracle 文档
最大暂停时间目标
暂停时间是垃圾收集器停止应用程序并回收不再使用的空间的持续时间。最大暂停时间目标的意图是限制这些暂停中的最长时间。垃圾收集器维护了平均暂停时间和该平均值的方差。平均值从执行开始计算,但会加权以使最近的暂停时间更具影响力。
如果平均暂停时间加上暂停时间的方差大于最大暂停时间目标,则垃圾收集器认为目标没有被满足。
垃圾收集器将调整Java堆大小和与垃圾回收相关的其他参数,以试图使垃圾回收暂停在毫秒范围内。默认情况下,没有最大暂停时间目标。这些调整可能导致垃圾收集器更频繁地发生,从而降低应用程序的总吞吐量。垃圾收集器在尝试达到任何暂停时间目标之前尝试满足吞吐量目标。然而,在某些情况下,无法满足期望的暂停时间目标。
对于CMS算法,如果最大暂停时间目标未被满足,会导致Excessive GC Time和OutOfMemoryError。
如果无法达到最大暂停时间目标,将会发生什么?是否忽略违规行为并继续执行,就像已满足目标一样?还是会抛出异常,例如CMS抛出OutOfMemory?