开始我直观上理解,吞吐量越大,暂停时间越短,这并不是矛盾的啊,但这是对基本概念没理解清楚!
吞吐量
等于用户线程运行总时间 / (用户线程运行总时间+垃圾回收线程总时间)
停顿时间
注意这里说的停顿时间,其实指的是每次执行垃圾回收造成用户线程停顿的平均时间,不是总的垃圾回收时间
矛盾原因
程序运行完毕的时间包括用户线程运行总时间+垃圾回收线程总时间。
程序运行过程中,一般都不是只发生一次垃圾回收,如果考虑每次最短停顿时间的平均值,那么此时每次回收的垃圾就会减少,垃圾回收的频率就会增加,但是因为垃圾回收造成用户线程暂停,而用户线程在运行和暂停之间切换的成本是很高的,因此这反而会造成用户线程运行时间更短,这就造成吞吐量下降,这就是矛盾的原因。