我在java应用程序中观察到一些奇怪的行为。次要GC暂停时间非常稳定,在2到4毫秒之间,间隔几秒钟(从大约4秒到几分钟不等,具体取决于繁忙程度)。我注意到在第一个完整GC之前,次要的收集暂停时间可能会达到几百毫秒,有时会超过秒标记。然而,在第一次完全收集之后,这些尖峰消失了,并且次要的收集暂停时间不会再次出现并且在2-4毫秒之间保持稳定。这些峰值似乎与终身堆使用率无关。
我不确定如何诊断问题。显然,从完整的集合中发生了一些变化,否则尖峰将继续发生。我正在寻找有关如何解决它的一些想法。
一些细节:
我尝试/想过的事情:
答案 0 :(得分:0)
首先,想了解更多关于此的信息,但由于评论需要50个回购,我没有这样问这里。 这个信息太少了。
要诊断问题,您可以打开GC日志并发布您注意到的行为。此外,您可以使用jstat在应用程序运行时查看堆空间使用情况:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html
要打开GC日志,您可以在此处阅读:http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html