我对java GC有疑问。我知道年轻一代和主要收藏品的收藏很少,通常YG的尺寸小于终身一代的尺寸。因此,次要集合的发生频率高于主要集合。
我的问题是,当次要集合和主要集合开始时,它们如何以不同的方式影响应用程序线程?
如果次要集合更频繁地发生,即使它快速收集垃圾对象,它是否会使应用程序线程更频繁地暂停?
感谢。
答案 0 :(得分:2)
我的问题是,当次要集合和主要集合开始时,它们如何以不同的方式影响应用程序线程?如果次要集合更频繁地发生,即使它快速收集垃圾对象,它是否会使应用程序线程更频繁地暂停?
简单的答案是你的问题(几乎)是同义反复。如果次要集合更频繁地发生,并且次要集合导致应用程序暂停,那么当然这会使应用程序更频繁地暂停。
真正的答案是,行为取决于相应空间的大小(例如YG与YG + TG)以及...更重要的是......在您已配置JVM使用的GC上。例如,如果你使用的是低暂停收集器,那么暂停应该不会引人注意......除非你将限制推得太远。
请注意,暂停的长度,而不是重要的暂停频率。暂停时间太短,不会伤到任何人。