Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
JavaGC周期性地进入几个完整的GC周期_Java_Multithreading_Jboss_Garbage Collection - Fatal编程技术网

JavaGC周期性地进入几个完整的GC周期

JavaGC周期性地进入几个完整的GC周期,java,multithreading,jboss,garbage-collection,Java,Multithreading,Jboss,Garbage Collection,环境: sun JDK 1.6.0_16 vm settings: -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -Xms1024 -Xmx1024M -XX:MaxNewSize=448m -XX:NewSize=448m -XX:SurvivorRatio=4(6 also checked) -XX:MaxPermSize=128M OS: windows server 2003 processor: 4 cores of INTEL X

环境:

sun JDK 1.6.0_16

vm settings:
-XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -Xms1024 -Xmx1024M -XX:MaxNewSize=448m -XX:NewSize=448m -XX:SurvivorRatio=4(6 also checked) -XX:MaxPermSize=128M

OS: windows server 2003

processor: 4 cores of INTEL XEON 5130,  2000 Hz
我的申请说明: 每次提交到oracle都会完成高强度的并发(使用java 5并发)操作。 大约有20-30个线程不停地运行,执行任务

应用程序在JBossWeb容器中运行

我的GC开始正常工作,我看到很多小GC,所有这些时间CPU都显示出良好的负载,就像所有4个内核加载到40-50%一样,CPU图是稳定的

然后,在1分钟的良好工作后,2个内核的CPU开始从4下降到0%,图形变得不稳定,上下波动(“齿”)。我看到,我的线程工作得比较慢(我有监控),我看到GC在这段时间内开始产生大量完整的GC,接下来的4-5分钟,这种情况保持不变,然后在很短的时间内,比如1分钟,它恢复到正常情况,但不久之后,所有的坏事情都会重复

问题: 为什么我有如此频繁的完整GC??? 如何预防这种情况?

我和SurvivorRatio一起玩过-没用

我注意到,当我有足够的内存时,在第一次完全GC出现之前,应用程序的行为是正常的。然后它跑得不好

我的GC日志:

  • 好的开始
  • 然后是长期的全面GCs(其中许多)


  • 从日志的最后两行(编辑问题之前):

    您肯定达到了内存限制,即660160K。此限制是总可用空间,不包括永久生成中的空间,即总堆减去一个幸存者空间。()

    每四秒钟创建约220M新的可gc对象,总内存使用率似乎以每秒1MB的速度增加。因此,一段时间后,JVM将只执行完整的GC,直到堆空间用完为止

    在这种情况下,我强烈怀疑,调整内存设置会在很长一段时间内有所帮助,因为你已经在6分钟后达到了极限

    看起来您必须查找内存泄漏或对大型未使用对象(结果集、DOM对象等)的存储引用


    新的价值观:同样的情况。您仍然达到了相同的内存上限,只是它发生在几分钟后,因为您分配了更多内存。闻起来真像是内存泄漏。您仍然以大约60 MB/s的速度生成可gc的内容。

    这看起来不像是内存泄漏;很可能JVM正在使用所有这些内存,这可能解释了频繁的完整GC。是否有可能产生多个进程?i、 e.不是一个进程有20-30个线程,而是有5个进程,每个进程运行4-5个线程


    另外,有什么理由让那些
    NewSize
    MaxNewSize
    SurvivorRatio
    JVM参数就位?您是否观察到这些东西带来了显著的性能提升?在调优任何应用程序时,我的第一种方法是以最少的JVM调优运行它,并且只有在我新添加的参数对当前情况有影响时才进行更改。

    提示-用四个空格缩进预格式化代码(例如GC日志)。为什么只
    1024M
    ?您是否有机会运行32位JVM?我的gc输出错误。这是为了较小的内存设置,右一个是关于完整GC 991231K->648045K(991232K)。我更新了我的问题。我检查了运行12小时的系统,没有OOM异常。它成功地运行了。无论如何,谢谢你。我有JProfiler,但仍然没有发现问题。你是对的。我只留下了Xmx和Xms,它变得更稳定了。谢谢!!!“我能帮上忙吗?”彼得:很高兴这对你有帮助。如果这些默认值最终解决了您的全部GC问题,请更新您的原始问题或将此问题标记为已解决。该问题已通过默认值解决。但在我的案例中,什么是违约?这段代码允许获取那些“隐藏”的默认值,如果我不提供参数,我会使用这些默认值。我的情况是:NewSize=16777216 MaxNewSize是67108864,SurviorRatio=8。我在GC中看到了真正的改进,不太完整的GC,但我也将测试负载降低到了生产中的水平,所以在我的例子中,分辨率不仅在GC参数上,而且在吞吐量上也有所降低。无论使用何种GC参数,此vm都无法支持我的初始加载。@Peter:有趣的链接。关于你的问题,就像我之前提到的,很可能你的虚拟机实际上需要所有的内存,因此无法达到最佳性能。我个人观察到,给虚拟机更多内存。比通常处理所需的性能更好。您还没有提到是运行32位还是64位虚拟机(我猜是32位)。因为,如果它是64位VM,增加
    Xmx
    值可能是一个有趣的练习。此外,您还没有依赖于我的查询,以确定是否可能有多个进程?“您是否有可能产生多个进程?”,我如何才能做到这一点?是否有任何JVM参数可用于此。我有16核CPU,但从来没有给出任何这样的参数。
    1027.861: [GC 942200K->623526K(991232K), 0.0887588 secs]
    1029.333: [GC 803279K(991232K), 0.0927470 secs]
    1030.551: [GC 967485K->625549K(991232K), 0.0823024 secs]
    1030.634: [GC 625957K(991232K), 0.0763656 secs]
    1033.126: [GC 969613K->632963K(991232K), 0.0850611 secs]
    1033.281: [GC 649899K(991232K), 0.0378358 secs]
    1035.910: [GC 813948K(991232K), 0.3540375 secs]
    1037.994: [GC 967729K->637198K(991232K), 0.0826042 secs]
    1038.435: [GC 710309K(991232K), 0.1370703 secs]
    1039.665: [GC 980494K->972462K(991232K), 0.6398589 secs]
    1040.306: [Full GC 972462K->619643K(991232K), 3.7780597 secs]
    1044.093: [GC 620103K(991232K), 0.0695221 secs]
    1047.870: [Full GC 991231K->626514K(991232K), 3.8732457 secs]
    1053.739: [GC 942140K(991232K), 0.5410483 secs]
    1056.343: [Full GC 991232K->634157K(991232K), 3.9071443 secs]
    1061.257: [GC 786274K(991232K), 0.3106603 secs]
    1065.229: [Full GC 991232K->641617K(991232K), 3.9565638 secs]
    1071.192: [GC 945999K(991232K), 0.5401515 secs]
    1073.793: [Full GC 991231K->648045K(991232K), 3.9627814 secs]
    1079.754: [GC 936641K(991232K), 0.5321197 secs]
    
    397.245: [Full GC 660160K->443379K(660160K), 2.7433121 secs]
    401.793: [Full GC 660160K->446464K(660160K), 2.7697340 secs]