Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PSYoungGen暂停抖动_Java_Garbage Collection_Jvm - Fatal编程技术网

Java PSYoungGen暂停抖动

Java PSYoungGen暂停抖动,java,garbage-collection,jvm,Java,Garbage Collection,Jvm,我在java应用程序中观察到一些奇怪的行为。次要GC暂停时间非常稳定,介于2到4毫秒之间,间隔几秒钟(根据繁忙程度从大约4秒到几分钟不等)。我注意到,在第一次完全GC之前,较小的收集暂停时间可能会达到几百毫秒,有时会超过秒数。但是,在第一次完全收集之后,这些峰值消失,小的收集暂停时间不再峰值,并在2-4毫秒之间保持稳定。这些峰值似乎与永久堆使用率无关 我不知道如何诊断这个问题。很明显,整个集合中有些东西发生了变化,否则尖峰将继续发生。我正在寻找一些解决问题的方法 一些细节: 我正在使用-ser

我在java应用程序中观察到一些奇怪的行为。次要GC暂停时间非常稳定,介于2到4毫秒之间,间隔几秒钟(根据繁忙程度从大约4秒到几分钟不等)。我注意到,在第一次完全GC之前,较小的收集暂停时间可能会达到几百毫秒,有时会超过秒数。但是,在第一次完全收集之后,这些峰值消失,小的收集暂停时间不再峰值,并在2-4毫秒之间保持稳定。这些峰值似乎与永久堆使用率无关

我不知道如何诊断这个问题。很明显,整个集合中有些东西发生了变化,否则尖峰将继续发生。我正在寻找一些解决问题的方法

一些细节:

  • 我正在使用-server标志。使用吞吐量并行收集器
  • 堆大小为1.5G,在年轻一代和长期一代之间使用默认比率。幸存者口粮仍然默认。我不确定这些与本次调查有多大关系,因为尽管进行了更多的调整,仍显示出相同的行为
  • 在启动时,我进行了几个DB调用。大部分信息都可以被GC删除(并且在收集完整信息后才会删除)。我的应用程序的某些实例将使用GC,而其他实例则不会
我所尝试/思考的:

  • 完全烫发?我认为并行收集器处理得很好,不需要更多的标志,这与CMS不同
  • 启动后手动触发完整GC。我将尝试这样做,希望根据观察结果解决这个问题。然而,这只是一个暂时的解决办法,因为我仍然不明白为什么会有问题

首先,我想了解更多信息,但由于评论需要50份回购协议,所以我没有在这里询问。 这是太少的信息与工作

要诊断问题,您可以打开GC日志并发布您注意到的行为。此外,您还可以在应用程序运行时使用jstat实时查看堆空间使用情况:

要打开GC日志,您可以阅读以下内容: