Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-7498

Native memory leak

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Not A Problem
    • Affects Version/s: 2.3.11
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:
      Ubuntu 14.04 , grails 2.4.5 java 1.7.0_80, tomcat 7.0.56

      Description

      We are experiencing JVM native memory leak after upgrading our web application from grails 2.4.4 (groovy 2.3.7) to grails 2.4.5 (groovy 2.3.11).
      It disappears if we replace groovy-all-2.3.11.jar in web application with groovy-all-2.3.7.jar.
      As a result of the leak JVM native memory usage can grow to 4G in two weeks after start of web application.

      We'd enabled native memory tracking (-XX:NativeMemoryTracking=detail) to gather some details. Here are results of native memory summary snapshot made with command jcmd pid VM.native_memory summary

      Native memory summary after start of application:
      Total: reserved=6039782KB, committed=6039342KB

      • Java Heap (reserved=5447680KB, committed=5447680KB)
        (mmap: reserved=5447680KB, committed=5447680KB)
      • Class (reserved=2944KB, committed=2944KB)
        (classes #19490)
        (malloc=2944KB, #56242)
      • Thread (reserved=131202KB, committed=131202KB)
        (thread #127)
        (stack: reserved=130556KB, committed=130556KB)
        (malloc=402KB, #515)
        (arena=244KB, #254)
      • Code (reserved=54669KB, committed=54261KB)
        (malloc=4749KB, #7615)
        (mmap: reserved=49920KB, committed=49512KB)
      • GC (reserved=350261KB, committed=350261KB)
        (malloc=148081KB, #28742)
        (mmap: reserved=202180KB, committed=202180KB)
      • Compiler (reserved=399KB, committed=399KB)
        (malloc=301KB, #480)
        (arena=98KB, #2)
      • Internal (reserved=14366KB, committed=14334KB)
        (malloc=14334KB, #21616)
        (mmap: reserved=32KB, committed=0KB)
      • Symbol (reserved=20911KB, committed=20911KB)
        (malloc=17355KB, #180610)
        (arena=3556KB, #1)
      • Memory Tracking (reserved=14986KB, committed=14986KB)
        (malloc=14986KB, #492)
      • Pooled Free Chunks (reserved=2365KB, committed=2365KB)
        (malloc=2365KB)

      One day after start:

      Total: reserved=6610742KB , committed=6610518KB

      • Java Heap (reserved=5447680KB, committed=5447680KB)
        (mmap: reserved=5447680KB, committed=5447680KB)
      • Class (reserved=5525KB, committed=5525KB)
        (classes #21209)
        (malloc=5525KB, #71960)
      • Thread (reserved=646KB, committed=646KB)
        (thread #127)
        (stack: reserved=130556KB, committed=130556KB)
        (malloc=402KB +13KB, #515)
        (arena=244KB +8KB, #254)
      • Code (reserved=58182KB, committed=57990KB)
        (malloc=8262KB, #11074)
        (mmap: reserved=49920KB, committed=49728KB)
      • GC (reserved=423906KB, committed=423906KB)
        (malloc=221726KB, #82681)
        (mmap: reserved=202180KB, committed=202180KB)
      • Compiler (reserved=440KB, committed=440KB)
        (malloc=342KB +20KB, #513)
        (arena=98KB, #2)
      • Internal (reserved=472055KB, committed=472023KB)
        (malloc=472023KB, #746397)
        (mmap: reserved=32KB, committed=0KB)
      • Symbol (reserved=21668KB +7KB, committed=21668KB +7KB)
        (malloc=17760KB +7KB, #185311)
        (arena=3908KB, #1)
      • Memory Tracking (reserved=49894KB, committed=49894KB)
        (malloc=49894KB +2464KB, #536)
      • Pooled Free Chunks (reserved=191KB, committed=191KB)
        (malloc=191KB)

      There is substantial increase in Internal memory usage and object count:
      14366KB, #21616 -> 472023KB, #746397

      Native memory summary, one day after start, same application, different groovy version (groovy-all-2.3.7.jar):

      Total: reserved=6098509KB, committed=6099309KB

      • Java Heap (reserved=5447680KB, committed=5447680KB)
        (mmap: reserved=5447680KB, committed=5447680KB)
      • Class (reserved=6263KB, committed=6263KB)
        (classes #21179)
        (malloc=6263KB, #71507)
      • Thread (reserved=117771KB, committed=118799KB)
        (thread #114)
        (stack: reserved=117192KB, committed=118220KB)
        (malloc=360KB, #463)
        (arena=219KB, #228)
      • Code (reserved=58131KB, committed=57935KB)
        (malloc=8211KB, #10858)
        (mmap: reserved=49920KB, committed=49724KB)
      • GC (reserved=383041KB, committed=383041KB)
        (malloc=180861KB, #80128)
        (mmap: reserved=202180KB, committed=202180KB)
      • Compiler (reserved=268KB, committed=268KB)
        (malloc=170KB, #313)
        (arena=98KB, #2)
      • Internal (reserved=41336KB, committed=41304KB)
        (malloc=41304KB, #69639)
        (mmap: reserved=32KB, committed=0KB)
      • Symbol (reserved=21696KB, committed=21696KB)
        (malloc=17788KB, #185505)
        (arena=3908KB, #1)
      • Memory Tracking (reserved=22135KB, committed=22135KB)
        (malloc=22135KB, #432)
      • Pooled Free Chunks (reserved=189KB, committed=189KB)
        (malloc=189KB)

      Internal memory consumption, one day after start, comparing groovy 2.3.7 to groovy 2.3.11:

      41336KB, #69639 - groovy 2.3.7
      472023KB, #746397 - groovy 2.3.11, more than 10 times increase.

        Attachments

        1. jmeter_jsr223_groovy_leak.png
          447 kB
          Vladimir Sitnikov

          Activity

            People

            • Assignee:
              blackdrag Jochen Theodorou
              Reporter:
              mkuchin Max Kuchin
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: