Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-43619

Memory leak in hudson.ClassicPluginStrategy$AntClassLoader2 and org.eclipse.jetty.webapp.WebAppClassLoader

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: Critical Critical
    • core

      We have tests constantly running on 6 jenkins slaves, every week or two jenkins becomes unstable because of memory issues.

       

      I have enabled GC logging, and using to gceasy.io I can clearly see that memory usage is increasing over time (included graph).

       

      Also took some jmap heap dumps which shows increasing number of "org.jruby.RubyObject" and "hudson.model.FreeStyleBuild" instances. (screenshots attached, one of them is taken after 3 days of start and another one after 7 days)

      Also included screenshots of common path to accumulation point (maybe it helps). Not sure we can upload jmap dumps (I assume they can contain sensitive information, e.g passwords, ssh private keys).

       

      Our jobs are configured to keep only 100 last builds.

       

       

          [JENKINS-43619] Memory leak in hudson.ClassicPluginStrategy$AntClassLoader2 and org.eclipse.jetty.webapp.WebAppClassLoader

          Tarvi Pillessaar created issue -
          Tarvi Pillessaar made changes -
          Environment Original: Jenkins version is 2.53.

          ava.runtime.name Java(TM) SE Runtime Environment
          java.runtime.version 1.8.0_121-b13
          java.specification.name Java Platform API Specification
          java.specification.vendor Oracle Corporation
          java.specification.version 1.8
          java.vendor Oracle Corporation
          java.vendor.url http://java.oracle.com/
          java.vendor.url.bug http://bugreport.sun.com/bugreport/
          java.version 1.8.0_121
          java.vm.info mixed mode
          java.vm.name Java HotSpot(TM) 64-Bit Server VM
          java.vm.specification.name Java Virtual Machine Specification
          java.vm.specification.vendor Oracle Corporation
          java.vm.specification.version 1.8
          java.vm.vendor Oracle Corporation
          java.vm.version 25.121-b13
          jna.loaded true
          jna.platform.library.path /usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/lib64:/usr/lib:/lib
          jnidispatch.path /tmp/jna--1712433994/jna6900187907216481773.tmp
          line.separator
          mail.smtp.sendpartial true
          mail.smtps.sendpartial true
          org.apache.commons.jelly.tags.fmt.timeZone Europe/Tallinn
          os.arch amd64
          os.name Linux
          os.version 4.4.0-72-generic
          path.separator :
          sun.arch.data.model 64

          Plugins:

          ace-editor 1.1 true
          ansible 0.6.2 true
          ansicolor 0.5.0 true
          ant 1.4 true
          antisamy-markup-formatter 1.5 true
          audit-trail 2.2 true
          authentication-tokens 1.3 true
          bouncycastle-api 2.16.1 true
          branch-api 2.0.8 true
          build-timeout 1.18 true
          build-token-root 1.4 true
          built-on-column 1.1 true
          claim 2.9 true
          cloudbees-folder 6.0.3 true
          conditional-buildstep 1.3.5 true
          config-file-provider 2.15.7 true
          credentials 2.1.13 true
          credentials-binding 1.11 true
          cvs 2.13 true
          datadog 0.5.6 true
          discard-old-build 1.05 true
          display-url-api 1.1.1 true
          docker-build-publish 1.3.2 true
          docker-build-step 1.41 true
          docker-commons 1.6 true
          docker-custom-build-environment 1.6.5 true
          docker-workflow 1.10 true
          durable-task 1.13 true
          email-ext 2.57.1 true
          emailext-template 1.0 true
          embeddable-build-status 1.9 true
          envinject 1.93.1 true
          extended-read-permission 2.0 true
          external-monitor-job 1.7 true
          extra-columns 1.18 true
          ghprb 1.35.0 true
          git 3.2.0 true
          git-client 2.4.1 true
          git-server 1.7 true
          github 1.26.2 true
          github-api 1.85 true
          github-branch-source 2.0.5 true
          github-organization-folder 1.6 true
          google-login 1.3 true
          greenballs 1.15 true
          groovy-postbuild 2.3.1 true
          handlebars 1.1.1 true
          hipchat 2.1.1 true
          htmlpublisher 1.12 true
          http-post 1.2 true
          icon-shim 2.0.3 true
          javadoc 1.4 true
          jenkins-multijob-plugin 1.24 true
          job-import-plugin 1.6 true
          jquery 1.11.2-0 true
          jquery-detached 1.2.1 true
          junit 1.20 true
          junit-attachments 1.4.2 true
          ldap 1.14 true
          locale 1.2 true
          mailer 1.20 true
          mapdb-api 1.0.9.0 true
          matrix-auth 1.4 true
          matrix-project 1.9 true
          maven-plugin 2.15.1 true
          momentjs 1.1.1 true
          multiple-scms 0.6 true
          nested-view 1.14 true
          nodejs 1.2.0 true
          pam-auth 1.3 true
          parameterized-trigger 2.33 true
          persistent-parameter 1.1 true
          pipeline-build-step 2.4 true
          pipeline-github-lib 1.0 true
          pipeline-graph-analysis 1.3 true
          pipeline-input-step 2.5 true
          pipeline-milestone-step 1.3.1 true
          pipeline-model-api 1.1.2 true
          pipeline-model-declarative-agent 1.1.1 true
          pipeline-model-definition 1.1.2 true
          pipeline-model-extensions 1.1.2 true
          pipeline-rest-api 2.6 true
          pipeline-stage-step 2.2 true
          pipeline-stage-tags-metadata 1.1.2 true
          pipeline-stage-view 2.6 true
          plain-credentials 1.4 true
          postbuild-task 1.8 true
          project-inheritance 2.0.0 true
          publish-over-ssh 1.17 true
          rebuild 1.25 true
          role-strategy 2.3.2 true
          ruby-runtime 0.12 true
          run-condition 1.0 true
          rvm 0.6 true
          saml 0.13 true
          scm-api 2.1.1 true
          script-security 1.27 true
          shelve-project-plugin 1.5 true
          simple-theme-plugin 0.3 true
          slack 2.2 true
          ssh 2.4 true
          ssh-agent 1.14 true
          ssh-credentials 1.13 true
          ssh-slaves 1.16 true
          structs 1.6 true
          subversion 2.7.2 true
          test-results-analyzer 0.3.4 true
          test-stability 2.2 true
          token-macro 2.1 true
          translation 1.15 true
          unitth 1.2.0 true
          windows-slaves 1.3.1 true
          workflow-aggregator 2.5 true
          workflow-api 2.12 true
          workflow-basic-steps 2.4 true
          workflow-cps 2.29 true
          workflow-cps-global-lib 2.7 true
          workflow-durable-task-step 2.10 true
          workflow-job 2.10 true
          workflow-multibranch 2.14 true
          workflow-scm-step 2.4 true
          workflow-step-api 2.9 true
          workflow-support 2.14 true

          JAVA_ARGS="-server -XX:+AlwaysPreTouch -Xmx8g -Xms4g -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:G1SummarizeRSetStatsPeriod=1 -XX:MaxMetaspaceExpansion=64M -XX:SoftRefLRUPolicyMSPerMB=10 -XX:G1HeapRegionSize=32m -XX:MaxMetaspaceSize=1024m -Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';\" -Dorg.apache.commons.jelly.tags.fmt.timeZone=Europe/Tallinn -Duser.timezone=Europe/Tallinn -Dcom.sun.management.jmxremote.port=7900 -Dcom.sun.management.jmxremote.password.file=/var/lib/jenkins/jmxremote.password -Dcom.sun.management.jmxremote.ssl=false -Xloggc:/var/lib/jenkins/gc-%t.log -XX:NumberOfGCLogFiles=5 -XX:+UseGCLogFileRotation -XX:GCLogFileSize=20m -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCCause -XX:+PrintTenuringDistribution -XX:+PrintReferenceGC -XX:+PrintAdaptiveSizePolicy"
          New: Jenkins version is 2.53.

          Name ↓
          Value
          awt.toolkit sun.awt.X11.XToolkit
          com.sun.management.jmxremote.password.file /var/lib/jenkins/jmxremote.password
          com.sun.management.jmxremote.port 7900
          com.sun.management.jmxremote.ssl false
          executable-war /usr/share/jenkins/jenkins.war
          file.encoding UTF-8
          file.encoding.pkg sun.io
          file.separator /
          hudson.model.DirectoryBrowserSupport.CSP default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';
          java.awt.graphicsenv sun.awt.X11GraphicsEnvironment
          java.awt.headless true
          java.awt.printerjob sun.print.PSPrinterJob
          java.class.path /usr/share/jenkins/jenkins.war
          java.class.version 52.0
          java.endorsed.dirs /usr/lib/jvm/java-8-oracle/jre/lib/endorsed
          java.ext.dirs /usr/lib/jvm/java-8-oracle/jre/lib/ext:/usr/java/packages/lib/ext
          java.home /usr/lib/jvm/java-8-oracle/jre
          java.io.tmpdir /tmp
          java.library.path /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
          java.rmi.server.randomIDs true
          java.runtime.name Java(TM) SE Runtime Environment
          java.runtime.version 1.8.0_121-b13
          java.specification.name Java Platform API Specification
          java.specification.vendor Oracle Corporation
          java.specification.version 1.8
          java.vendor Oracle Corporation
          java.vendor.url http://java.oracle.com/
          java.vendor.url.bug http://bugreport.sun.com/bugreport/
          java.version 1.8.0_121
          java.vm.info mixed mode
          java.vm.name Java HotSpot(TM) 64-Bit Server VM
          java.vm.specification.name Java Virtual Machine Specification
          java.vm.specification.vendor Oracle Corporation
          java.vm.specification.version 1.8
          java.vm.vendor Oracle Corporation
          java.vm.version 25.121-b13
          jna.loaded true
          jna.platform.library.path /usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/lib64:/usr/lib:/lib
          jnidispatch.path /tmp/jna--1712433994/jna6900187907216481773.tmp
          line.separator
          mail.smtp.sendpartial true
          mail.smtps.sendpartial true
          org.apache.commons.jelly.tags.fmt.timeZone Europe/Tallinn
          os.arch amd64
          os.name Linux
          os.version 4.4.0-72-generic
          path.separator :
          sun.arch.data.model 64
          sun.boot.class.path /usr/lib/jvm/java-8-oracle/jre/lib/resources.jar:/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jsse.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jce.jar:/usr/lib/jvm/java-8-oracle/jre/lib/charsets.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jfr.jar:/usr/lib/jvm/java-8-oracle/jre/classes
          sun.boot.library.path /usr/lib/jvm/java-8-oracle/jre/lib/amd64
          sun.cpu.endian little
          sun.cpu.isalist
          sun.font.fontmanager sun.awt.X11FontManager
          sun.io.unicode.encoding UnicodeLittle
          sun.java.command /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080
          sun.java.launcher SUN_STANDARD
          sun.jnu.encoding UTF-8
          sun.management.compiler HotSpot 64-Bit Tiered Compilers
          sun.os.patch.level unknown
          svnkit.http.methods Digest,Basic,NTLM,Negotiate
          svnkit.ssh2.persistent false
          user.country US
          user.dir /
          user.home /var/lib/jenkins
          user.language en
          user.name jenkins
          user.timezone Europe/Tallinn
          Environment Variables

          Name ↓
          Value
          _ /usr/bin/daemon
          _system_arch x86_64
          _system_name Ubuntu
          _system_type Linux
          _system_version 16.04
          AUDIT_INCLUDED 1234
          AUDIT_LASTHISTLINE
          AUDIT_LOGINPID
          AUDIT_LOGINUSER
          AUDIT_PID 1234
          AUDIT_SSH
          AUDIT_STR [audit+/+as+jenkins/1234+on+/]
          AUDIT_SYSLOG 1
          AUDIT_TTY
          AUDIT_USER jenkins
          BASH_COMMAND declare -rx BASH_COMMAND
          BASH_FUNC_AUDIT_DEBUG%% () { if [ -z "$AUDIT_LASTHISTLINE" ]; then
          local AUDIT_CMD="$(fc -l -1 -1 2> /dev/null)";
          AUDIT_LASTHISTLINE="${AUDIT_CMD%%+([^ 0-9])*}";
          else
          AUDIT_LASTHISTLINE="$AUDIT_HISTLINE";
          fi;
          local AUDIT_CMD="$(history 1)";
          AUDIT_HISTLINE="${AUDIT_CMD%%+([^ 0-9])*}";
          if [ "${AUDIT_HISTLINE:-0}" -ne "${AUDIT_LASTHISTLINE:-0}" ] || [ "${AUDIT_HISTLINE:-0}" -eq "1" ]; then
          echo -ne "${_backnone}${_frontgrey}";
          if [ -n "$AUDIT_SYSLOG" ]; then
          if ! logger -p user.info -t "$AUDIT_STR $PWD" "${AUDIT_CMD##*( )?(+([0-9])?(\*)+( ))}"; then
          echo error "$AUDIT_STR $PWD" "${AUDIT_CMD##*( )?(+([0-9])?(\*)+( ))}";
          fi;
          else
          echo $( date +%F_%H:%M:%S ) "$AUDIT_STR $PWD" "${AUDIT_CMD##*( )?(+([0-9])?(\*)+( ))}" >> /var/log/userlog.info;
          fi;
          return 0;
          else
          return 1;
          fi
          }
          BASH_FUNC_AUDIT_EXIT%% () { local AUDIT_STATUS="$?";
          if [ -n "$AUDIT_SYSLOG" ]; then
          logger -p user.info -t "$AUDIT_STR" "#=== session closed ===";
          else
          echo $( date +%F_%H:%M:%S ) "$AUDIT_STR" "#=== session closed ===" >> /var/log/userlog.info;
          fi;
          exit "$AUDIT_STATUS"
          }
          DERBY_HOME /usr/lib/jvm/java-8-oracle/db
          GEM_HOME /var/lib/jenkins/.rvm/gems/ruby-2.2.1
          GEM_PATH /var/lib/jenkins/.rvm/gems/ruby-2.2.1:/var/lib/jenkins/.rvm/gems/ruby-2.2.1@global
          HISTCMD 1
          HISTCONTROL
          HISTFILE /var/lib/jenkins/.bash_history
          HISTFILESIZE 500000
          HISTIGNORE
          HISTSIZE 500000
          HOME /var/lib/jenkins
          IRBRC /var/lib/jenkins/.rvm/rubies/ruby-2.2.1/.irbrc
          J2REDIR /usr/lib/jvm/java-8-oracle/jre
          J2SDKDIR /usr/lib/jvm/java-8-oracle
          JAVA_HOME /usr/lib/jvm/java-8-oracle
          JENKINS_HOME /var/lib/jenkins
          LANG en_US.UTF-8
          LOGNAME jenkins
          MAIL /var/mail/jenkins
          MY_RUBY_HOME /var/lib/jenkins/.rvm/rubies/ruby-2.2.1
          NLSPATH /usr/dt/lib/nls/msg/%L/%N.cat
          PATH /var/lib/jenkins/.rvm/gems/ruby-2.2.1/bin:/var/lib/jenkins/.rvm/gems/ruby-2.2.1@global/bin:/var/lib/jenkins/.rvm/rubies/ruby-2.2.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/var/lib/jenkins/.rvm/bin
          PROMPT_COMMAND [ -n "$AUDIT_DONE" ]; AUDIT_DONE=; trap 'AUDIT_DEBUG && AUDIT_DONE=1; trap DEBUG' DEBUG
          PWD /var/lib/jenkins
          RUBY_VERSION ruby-2.2.1
          rvm_bin_path /var/lib/jenkins/.rvm/bin
          rvm_loaded_flag 1
          rvm_path /var/lib/jenkins/.rvm
          rvm_prefix /var/lib/jenkins
          rvm_stored_umask 0002
          rvm_user_install_flag 1
          rvm_version 1.26.11 (latest)
          SHELL /bin/bash
          SHLVL 1
          USER jenkins
          XDG_RUNTIME_DIR /run/user/115
          XDG_SESSION_ID c1
          XFILESEARCHPATH /usr/dt/app-defaults/%L/Dt
          Plugins

          Name ↓
          Version
          Enabled
          ace-editor 1.1 true
          ansible 0.6.2 true
          ansicolor 0.5.0 true
          ant 1.4 true
          antisamy-markup-formatter 1.5 true
          audit-trail 2.2 true
          authentication-tokens 1.3 true
          bouncycastle-api 2.16.1 true
          branch-api 2.0.8 true
          build-timeout 1.18 true
          build-token-root 1.4 true
          built-on-column 1.1 true
          claim 2.9 true
          cloudbees-folder 6.0.3 true
          conditional-buildstep 1.3.5 true
          config-file-provider 2.15.7 true
          credentials 2.1.13 true
          credentials-binding 1.11 true
          cvs 2.13 true
          datadog 0.5.6 true
          discard-old-build 1.05 true
          display-url-api 1.1.1 true
          docker-build-publish 1.3.2 true
          docker-build-step 1.41 true
          docker-commons 1.6 true
          docker-custom-build-environment 1.6.5 true
          docker-workflow 1.10 true
          durable-task 1.13 true
          email-ext 2.57.1 true
          emailext-template 1.0 true
          embeddable-build-status 1.9 true
          envinject 1.93.1 true
          extended-read-permission 2.0 true
          external-monitor-job 1.7 true
          extra-columns 1.18 true
          ghprb 1.35.0 true
          git 3.2.0 true
          git-client 2.4.1 true
          git-server 1.7 true
          github 1.26.2 true
          github-api 1.85 true
          github-branch-source 2.0.5 true
          github-organization-folder 1.6 true
          google-login 1.3 true
          greenballs 1.15 true
          groovy-postbuild 2.3.1 true
          handlebars 1.1.1 true
          hipchat 2.1.1 true
          htmlpublisher 1.12 true
          http-post 1.2 true
          icon-shim 2.0.3 true
          javadoc 1.4 true
          jenkins-multijob-plugin 1.24 true
          job-import-plugin 1.6 true
          jquery 1.11.2-0 true
          jquery-detached 1.2.1 true
          junit 1.20 true
          junit-attachments 1.4.2 true
          ldap 1.14 true
          locale 1.2 true
          mailer 1.20 true
          mapdb-api 1.0.9.0 true
          matrix-auth 1.4 true
          matrix-project 1.9 true
          maven-plugin 2.15.1 true
          momentjs 1.1.1 true
          multiple-scms 0.6 true
          nested-view 1.14 true
          nodejs 1.2.0 true
          pam-auth 1.3 true
          parameterized-trigger 2.33 true
          persistent-parameter 1.1 true
          pipeline-build-step 2.4 true
          pipeline-github-lib 1.0 true
          pipeline-graph-analysis 1.3 true
          pipeline-input-step 2.5 true
          pipeline-milestone-step 1.3.1 true
          pipeline-model-api 1.1.2 true
          pipeline-model-declarative-agent 1.1.1 true
          pipeline-model-definition 1.1.2 true
          pipeline-model-extensions 1.1.2 true
          pipeline-rest-api 2.6 true
          pipeline-stage-step 2.2 true
          pipeline-stage-tags-metadata 1.1.2 true
          pipeline-stage-view 2.6 true
          plain-credentials 1.4 true
          postbuild-task 1.8 true
          project-inheritance 2.0.0 true
          publish-over-ssh 1.17 true
          rebuild 1.25 true
          role-strategy 2.3.2 true
          ruby-runtime 0.12 true
          run-condition 1.0 true
          rvm 0.6 true
          saml 0.13 true
          scm-api 2.1.1 true
          script-security 1.27 true
          shelve-project-plugin 1.5 true
          simple-theme-plugin 0.3 true
          slack 2.2 true
          ssh 2.4 true
          ssh-agent 1.14 true
          ssh-credentials 1.13 true
          ssh-slaves 1.16 true
          structs 1.6 true
          subversion 2.7.2 true
          test-results-analyzer 0.3.4 true
          test-stability 2.2 true
          token-macro 2.1 true
          translation 1.15 true
          unitth 1.2.0 true
          windows-slaves 1.3.1 true
          workflow-aggregator 2.5 true
          workflow-api 2.12 true
          workflow-basic-steps 2.4 true
          workflow-cps 2.29 true
          workflow-cps-global-lib 2.7 true
          workflow-durable-task-step 2.10 true
          workflow-job 2.10 true
          workflow-multibranch 2.14 true
          workflow-scm-step 2.4 true
          workflow-step-api 2.9 true
          workflow-support 2.14 true

          JAVA_ARGS="-server -XX:+AlwaysPreTouch -Xmx8g -Xms4g -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:G1SummarizeRSetStatsPeriod=1 -XX:MaxMetaspaceExpansion=64M -XX:SoftRefLRUPolicyMSPerMB=10 -XX:G1HeapRegionSize=32m -XX:MaxMetaspaceSize=1024m -Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';\" -Dorg.apache.commons.jelly.tags.fmt.timeZone=Europe/Tallinn -Duser.timezone=Europe/Tallinn -Dcom.sun.management.jmxremote.port=7900 -Dcom.sun.management.jmxremote.password.file=/var/lib/jenkins/jmxremote.password -Dcom.sun.management.jmxremote.ssl=false -Xloggc:/var/lib/jenkins/gc-%t.log -XX:NumberOfGCLogFiles=5 -XX:+UseGCLogFileRotation -XX:GCLogFileSize=20m -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCCause -XX:+PrintTenuringDistribution -XX:+PrintReferenceGC -XX:+PrintAdaptiveSizePolicy"
          Tarvi Pillessaar made changes -
          Description Original: We have tests constantly running on 6 jenkins slaves, every week or two jenkins becomes unstable because of memory issues.

           

          I have enabled GC logging, and using to gceasy.io I can clearly see that memory usage is increasing over time (included graph).

           

          Also took some jmap heap dumps which shows increasing number of "org.jruby.RubyObject" and "hudson.model.FreeStyleBuild" instances. (screenshots attached, one of them is taken after 3 days of start and another one after 7 days)

          Also included screenshots of common path to accumulation point (maybe it helps). Not sure we can upload jmap dumps (I assume they can contain sensitive information, e.g passwords, ssh private keys).

           

           
          New: We have tests constantly running on 6 jenkins slaves, every week or two jenkins becomes unstable because of memory issues.

           

          I have enabled GC logging, and using to gceasy.io I can clearly see that memory usage is increasing over time (included graph).

           

          Also took some jmap heap dumps which shows increasing number of "org.jruby.RubyObject" and "hudson.model.FreeStyleBuild" instances. (screenshots attached, one of them is taken after 3 days of start and another one after 7 days)

          Also included screenshots of common path to accumulation point (maybe it helps). Not sure we can upload jmap dumps (I assume they can contain sensitive information, e.g passwords, ssh private keys).

           

          Our jobs are configured to keep only 100 last builds.

           

           

          Oleg Nenashev added a comment -

          FreeStyle builds may be fine, it needs full heap dump check.
          Regarding jruby, I would suspect the Ruby plugin, which does not cleanup the contributed buildEnvironments after the build completion. But this object should be deallocated along with the build.

          Would it be possible to get more information about references to FreestyleBuild objects? The provided ones are related to the Pending builds (ref from the executor is active), hence they should be retained in the memory. It is more interesting to understand if there are any runaway references to deleted builds.

          Also, how many jobs do you have on the instance?

          Oleg Nenashev added a comment - FreeStyle builds may be fine, it needs full heap dump check. Regarding jruby, I would suspect the Ruby plugin, which does not cleanup the contributed buildEnvironments after the build completion. But this object should be deallocated along with the build. Would it be possible to get more information about references to FreestyleBuild objects? The provided ones are related to the Pending builds (ref from the executor is active), hence they should be retained in the memory. It is more interesting to understand if there are any runaway references to deleted builds. Also, how many jobs do you have on the instance?

          We have ~50 jobs in total and up to 15 (most of the time it is ~10) are running in parallel constantly (once job finishes it is started again).

           

          Regarding providing more information about references and etc, I am happy to provide more information, but I'm not a Java developer and my concern is that I'm posting wrong or not detailed enough screenshots, to avoid wasting each other's time maybe it we should have a screen sharing session.

           

          If you prefer not to have screen sharing session then I have an additional question:

          If I'm clicking FreeStyleBuild object in Eclipse Memory Analyzer and select "List objects of incoming references" then get new page, but I'm don't know which object should I expand on that page?

          Tarvi Pillessaar added a comment - We have ~50 jobs in total and up to 15 (most of the time it is ~10) are running in parallel constantly (once job finishes it is started again).   Regarding providing more information about references and etc, I am happy to provide more information, but I'm not a Java developer and my concern is that I'm posting wrong or not detailed enough screenshots, to avoid wasting each other's time maybe it we should have a screen sharing session.   If you prefer not to have screen sharing session then I have an additional question: If I'm clicking FreeStyleBuild object in Eclipse Memory Analyzer and select "List objects of incoming references" then get new page, but I'm don't know which object should I expand on that page?

          Oleg Nenashev added a comment -

          For such scale you definitely have too many objects.

          > If you prefer not to have screen sharing session then I have an additional question:

          Sorry, I just have no time for that in next few weeks. Maybe somebody else would be interested to do that though it is not a common procedure in open-source projects.

          I would start from gathering more information about your instance, e.g. installed plugins and versions. You can grab this and other info using this plugin: https://wiki.jenkins-ci.org/display/JENKINS/Support+Core+Plugin

          Oleg Nenashev added a comment - For such scale you definitely have too many objects. > If you prefer not to have screen sharing session then I have an additional question: Sorry, I just have no time for that in next few weeks. Maybe somebody else would be interested to do that though it is not a common procedure in open-source projects. I would start from gathering more information about your instance, e.g. installed plugins and versions. You can grab this and other info using this plugin: https://wiki.jenkins-ci.org/display/JENKINS/Support+Core+Plugin

          Closing this issue, it is not relevant for me any longer.

          Tarvi Pillessaar added a comment - Closing this issue, it is not relevant for me any longer.
          Tarvi Pillessaar made changes -
          Resolution New: Won't Fix [ 2 ]
          Status Original: Open [ 1 ] New: Closed [ 6 ]

            Unassigned Unassigned
            tarvi Tarvi Pillessaar
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: