我有一个关于java GC的问题。我知道有年轻一代的小收集和永久一代的主要收集,通常YG的大小小于永久一代的大小。因此,次要收集比主要收集更频繁。
我的问题是,当次要集合和主要集合启动时,它们如何以不同的方式影响应用程序线程?
如果小收集发生得更频繁,即使它快速地收集垃圾对象,也会使应用程序线程更频繁地暂停吗?
谢谢。
发布于 2011-11-03 10:08:49
我的问题是,当次要集合和主要集合启动时,它们如何以不同的方式影响应用程序线程?如果小收集发生得更频繁,即使它快速地收集垃圾对象,也会使应用程序线程更频繁地暂停吗?
答案很简单,你的问题(几乎)是重言式的。如果较小的收集更频繁地发生,并且较小的收集导致应用程序暂停,那么当然这会使应用程序更频繁地暂停。
真正的答案是,行为取决于各自空间的大小(例如,YG与YG + TG)和……更重要的是。在您已配置JVM要使用的GC上。例如,如果您使用的是低暂停收集器,那么暂停应该不会引起注意……除非你做的太过分了。
请注意,重要的是暂停的长度,而不是暂停的频率。短暂的停顿不会伤害到任何人。
https://stackoverflow.com/questions/7989473
复制相似问题