Java 调试可能存在内存泄漏的tomcat应用程序

Java 调试可能存在内存泄漏的tomcat应用程序,java,tomcat,Java,Tomcat,情况-在tomcat上运行的API应用程序。每次我到达API端点时,“top”中的内存使用量都会增加一小部分。在通过约35-40%(大约12个请求)后,负载水平从1%变为40+%,应用程序变得无响应(并且必须重新启动tomcat/container) 我所做的: 1.在1个请求和5-10个请求之后进行堆转储,并对它们进行比较。内存增长不是在我的任何类中,而是在“int[]”和“java.lang”中。我对java内存管理了解不够,无法理解这种情况 我使用ps-eLf监视线程计数/增长。没有什么要

情况-在tomcat上运行的API应用程序。每次我到达API端点时,“top”中的内存使用量都会增加一小部分。在通过约35-40%(大约12个请求)后,负载水平从1%变为40+%,应用程序变得无响应(并且必须重新启动tomcat/container)

我所做的:
1.在1个请求和5-10个请求之后进行堆转储,并对它们进行比较。内存增长不是在我的任何类中,而是在“int[]”和“java.lang”中。我对java内存管理了解不够,无法理解这种情况

  • 我使用
    ps-eLf
    监视线程计数/增长。没有什么要报告的

  • 使用jstat-GC观看GC。输出如下所示:

  • (开始)

    (结束-在我失去联系之前)

    • 再说一遍,我对java内存管理了解不够,无法真正解释这些值。我可以看出,主要的垃圾收集并没有花费太多的时间,但肯定会发生

    • 还尝试(作为圣母玛利亚)使用
      -XX:+UseG1GC
      。没有真正的区别

    • 随着使用率值变得疯狂,我观察了CPU%/IOWait(通过顶部)。CPU保持理性,无需等待。还使用wchan查看了
      top-H

    关于其他地方的建议?看到我忽略的明显的东西了吗

    使用Java8运行。最新的Tomcat版本。CentOS 7。(在Docker中测试运行)


    附加的 使用
    jstat-class
    进行了一些测量,我对这些值很好奇:

    (开始)

    (完)


    这是否意味着我的应用程序已经加载了额外的70K个类,而没有卸载任何类?这是一个问题吗?

    使用
    jvisualvm
    并远程连接(通过使用正确的jmx参数启动tomcat实例)。然后,您将能够看到所有内容,包括堆内存,以及更多内容。在您的情况下,您可能会耗尽堆内存,GC会继续尝试释放内存,但由于内存泄漏,无法释放内存,这会无限期地重复,CPU非常繁忙。

    CPU%保持在合理的限制范围内。系统使用率值(5分钟、15分钟等)非常高。GC线程可能只占用1个核心,系统使用率是什么意思?我指的是从
    正常运行时间
    顶部
      S0C      S1C     S0U    S1U      EC       EU        OC         OU       MC      MU     CCSC   CCSU       YGC   YGCT    FGC    FGCT     GCT
      56832.0 57856.0  0.0   17266.5 157184.0 31716.8   546304.0   35573.4   40104.0 39112.5 4776.0 4474.5      7    1.669   2      0.251    1.921
    
     S0C     S1C      S0U    S1U      EC       EU        OC         OU       MC       MU      CCSC     CCSU       YGC     YGCT  FGC      FGCT     GCT
     28160.0 27648.0  0.0    0.0   217088.0  4693.9   546304.0   76262.8   404008.0 402586.8 139816.0 139470.6     40    2.595  13      2.859    5.455
    
    Loaded  Bytes .   Unloaded  Bytes     Time
    121699 122371.1        4     3.4      31.34
    
    Loaded  Bytes    Unloaded    Bytes    Time
    194495 191761.7        4     3.4      39.20