Jenkins memory leak ?

Jenkins will occupy very little memory when it is first started, but as time goes by, Jenkins will occupy more and more memory, especially the memory in the G1 Old Gen area will not be released, and it will become larger and larger (this process (is slow), even if no one uses Jenkins on weekends, its memory will increase.


After the service is restarted, the memory usage returns to normal again. The picture below is the situation when Jenkins restarts.

Hello @hellojukay and welcome back! :wave:

Could you please provide some additional details to assist us in troubleshooting your issue?

  1. What version of Jenkins are you currently using?
  2. Could you specify your operating system?
  3. Which JVM are you running Jenkins with?

Furthermore, if you could share a list of the plugins you have installed, it would be very helpful.

Lastly, do you have access to a more detailed memory occupation chart that could provide insights into how this memory is being utilized?

Your response will greatly assist us in diagnosing and resolving your concern. Thank you!

Jenkins: 2.375.1
OS: Linux - 5.4.0-139-generic
Java: 11.0.17 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
ace-editor:1.1
active-directory:2.29
allure-jenkins-plugin:2.30.3
ansible:1.1
ant:481.v7b_09e538fcca
antisamy-markup-formatter:155.v795fb_8702324
apache-httpcomponents-client-4-api:4.5.13-138.v4e7d9a_7b_a_e61
authentication-tokens:1.4
badge:1.9.1
blueocean:1.26.0
blueocean-autofavorite:1.2.5
blueocean-bitbucket-pipeline:1.26.0
blueocean-commons:1.26.0
blueocean-config:1.26.0
blueocean-core-js:1.26.0
blueocean-dashboard:1.26.0
blueocean-display-url:2.4.1
blueocean-events:1.26.0
blueocean-executor-info:1.26.0
blueocean-git-pipeline:1.26.0
blueocean-github-pipeline:1.26.0
blueocean-i18n:1.26.0
blueocean-jira:1.26.0
blueocean-jwt:1.26.0
blueocean-personalization:1.26.0
blueocean-pipeline-api-impl:1.26.0
blueocean-pipeline-editor:1.26.0
blueocean-pipeline-scm-api:1.26.0
blueocean-rest:1.26.0
blueocean-rest-impl:1.26.0
blueocean-web:1.26.0
bootstrap5-api:5.2.1-3
bouncycastle-api:2.26
branch-api:2.1051.v9985666b_f6cc
build-name-setter:2.2.0
build-timeout:1.25
build-timestamp:1.0.3
build-user-vars-plugin:1.9
buildresult-trigger:0.18
buildtriggerbadge:251.vdf6ef853f3f5
caffeine-api:2.9.3-65.v6a_47d0f4d1fe
checks-api:1.8.0
cleansource:1.14.3-SNAPSHOT (private-06/09/2023 13:13-Administrator)
cloudbees-bitbucket-branch-source:791.vb_eea_a_476405b
cloudbees-folder:6.800.v71307ca_b_986b
cmakebuilder:4.1.1
code-coverage-api:3.5.0
command-launcher:90.v669d7ccb_7c31
commons-lang3-api:3.12.0-36.vd97de6465d5b_
commons-text-api:1.10.0-27.vb_fa_3896786a_7
config-file-provider:3.11.1
credentials:1214.v1de940103927
credentials-binding:523.vd859a_4b_122e6
cvs:2.19.1
data-tables-api:1.12.1-4
description-setter:1.10
display-url-api:2.3.7
docker-commons:1.21
docker-workflow:563.vd5d2e5c4007f
doxygen:0.18
durable-task:503.v57154d18d478
echarts-api:5.4.0-1
email-ext:2.92
email-ext-recipients-column:27.vb_9404db_b_018d
emailext-template:1.5
envinject:2.892.v25453b_80e595
envinject-api:1.199.v3ce31253ed13
extended-choice-parameter:359.v35dcfdd0c20d
extensible-choice-parameter:1.8.0
external-monitor-job:203.v683c09d993b_9
favorite:2.4.1
font-awesome-api:6.2.1-1
forensics-api:1.16.0
generic-webhook-trigger:1.85.2
git:4.14.3
git-client:3.13.1
git-forensics:1.11.0
git-parameter:0.9.18
git-server:99.va_0826a_b_cdfa_d
github:1.36.0
github-api:1.303-400.v35c2d8258028
github-branch-source:1696.v3a_7603564d04
gitlab-api:5.0.1-78.v47a_45b_9f78b_7
gitlab-branch-source:643.vdc12a_4a_06434
gitlab-kubernetes-credentials:22.v6a_97471fb_418
gitlab-logo:1.1.0
gitlab-merge-request-jenkins:2.0.0
gitlab-oauth:1.16
gitlab-plugin:1.6.0
gradle:2.1.1
gradle-daemon:0.1.0
gradle-repo:1.0.1
groovy-postbuild:2.5
h2-api:1.4.199
handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953
htmlpublisher:1.31
http_request:1.16
inline-pipeline:1.0.2
instance-identity:142.v04572ca_5b_265
ionicons-api:31.v4757b_6987003
jackson2-api:2.14.1-313.v504cdd45c18b
jacoco:3.3.2
jakarta-activation-api:2.0.1-2
jakarta-mail-api:2.0.1-2
javadoc:226.v71211feb_e7e9
javax-activation-api:1.2.0-5
javax-mail-api:1.6.2-8
jaxb:2.3.7-1
jdk-tool:63.v62d2fd4b_4793
jenkins-design-language:1.26.0
jersey2-api:2.37-1
jfrog:1.0.5
jira:3.8
jira-steps:2.0.141.vd0c6e6dc83f0
jjwt-api:0.11.5-77.v646c772fddb_0
job-import-plugin:3.6
jobtemplates:1.0
jquery3-api:3.6.1-2
jsch:0.1.55.61.va_e9ee26616e7
junit:1166.va_436e268e972
kubernetes:3743.v1fa_4c724c3b_7
kubernetes-client-api:5.12.2-193.v26a_6078f65a_9
kubernetes-credentials:0.9.0
kubernetes-credentials-provider:1.206.v7ce2cf7b_0c8b
kubernetes-pipeline-devops-steps:1.6
ldap:2.12
ldapemail:0.8
localization-support:1.2
localization-zh-cn:1.0.24
lockable-resources:1069.v726298f53f8c
log-file-filter:76.v43e83b7e1163
mail-watcher-plugin:1.17
mailcommander:1.0.0
mailer:438.v02c7f0a_12fa_4
matrix-auth:3.1.6
matrix-project:785.v06b_7f47b_c631
maven-plugin:3.20
metrics:4.2.13-420.vea_2f17932dd6
mina-sshd-api-common:2.9.2-50.va_0e1f42659a_a
mina-sshd-api-core:2.9.2-50.va_0e1f42659a_a
momentjs:1.1.1
monitoring:1.95.0
multi-branch-project-plugin:0.7
multibranch-build-strategy-extension:1.0.10
multibranch-scan-webhook-trigger:1.0.9
okhttp-api:4.9.3-108.v0feda04578cf
pam-auth:1.10
parameterized-scheduler:1.2
parameterized-trigger:2.45
persistent-parameter:1.3
pipeline-build-step:2.18
pipeline-config-history:1.6
pipeline-github:2.8-138.d766e30bb08b
pipeline-github-lib:38.v445716ea_edda_
pipeline-graph-analysis:195.v5812d95a_a_2f9
pipeline-groovy-lib:621.vb_44ce045b_582
pipeline-input-step:466.v6d0a_5df34f81
pipeline-maven:1239.v08f725b_927d9
pipeline-milestone-step:101.vd572fef9d926
pipeline-model-api:2.2118.v31fd5b_9944b_5
pipeline-model-declarative-agent:1.1.1
pipeline-model-definition:2.2118.v31fd5b_9944b_5
pipeline-model-extensions:2.2118.v31fd5b_9944b_5
pipeline-multibranch-defaults:2.1
pipeline-rest-api:2.28
pipeline-stage-step:296.v5f6908f017a_5
pipeline-stage-tags-metadata:2.2118.v31fd5b_9944b_5
pipeline-stage-view:2.28
pipeline-timeline:1.0.3
pipeline-utility-steps:2.14.0
plain-credentials:139.ved2b_9cf7587b
plugin-util-api:2.20.0
popper2-api:2.11.6-2
prism-api:1.29.0-1
prometheus:2.1.1
pubsub-light:1.17
qy-wechat-notification:1.1.1
rebuild:1.33
remote-file:1.23
repo:1.16.0
resource-disposer:0.20
role-strategy:569.v7476f8e4fe29
scm-api:621.vda_a_b_055e58f7
scm-filter-branch-pr:0.5.1
scp:1.8
script-security:1228.vd93135a_2fb_25
simple-build-for-pipeline:0.2
snakeyaml-api:1.33-90.v80dcb_3814d35
sonar:2.15
sonarqube-generic-coverage:1.0
sse-gateway:1.26
ssh:2.6.1
ssh-agent:295.v9ca_a_1c7cc3a_a_
ssh-credentials:305.v8f4381501156
ssh-slaves:2.854.v7fd446b_337c9
ssh-steps:2.0.39.v831c5e6468b_c
sshd:3.270.vb_a_e71e64c287
structs:324.va_f5d6774f3a_d
template-workflows:41.v32d86a_313b_4a
terminate-ssh-processes-plugin:1.0
test-results-aggregator:1.2.10
text-finder:1.22
throttle-concurrents:2.10
timestamper:1.21
token-macro:321.vd7cc1f2a_52c8
trilead-api:2.84.v72119de229b_7
variant:59.vf075fe829ccb
windows-slaves:1.8.1
workflow-aggregator:590.v6a_d052e5a_a_b_5
workflow-api:1200.v8005c684b_a_c6
workflow-basic-steps:994.vd57e3ca_46d24
workflow-cps:3565.v4b_d9b_8c29a_b_3
workflow-cps-global-lib:609.vd95673f149b_b
workflow-durable-task-step:1217.v38306d8fa_b_5c
workflow-job:1254.v3f64639b_11dd
workflow-multibranch:716.vc692a_e52371b_
workflow-remote-loader:1.5
workflow-scm-step:400.v6b_89a_1317c9a_
workflow-step-api:639.v6eca_cd8c04a_a_
workflow-support:839.v35e2736cfd5c
ws-cleanup:0.44

I can share some MAT result





I guess you have been using Kubernetes agents attached via WebSocket? There should only be one Channel or KubernetesComputer etc. per actual agent currently online, and I presume you are not running 11600+ builds simultaneously. Does MAT offer an option to find the GC root reference chain for one of these?


Yes, we are using kubernets plugin to connect to Jenkins, using websocket proxy, Jenkins has completed a total of 11600+ compilations, and there are about 10 tasks compiling concurrently. Mat does ont provide gc root result. If you need, i can send heapdump file to your email.

It is right click on the object and “show paths to GC roots” if I remember correctly. There is certainly a way in the UI and if all else fails you can use should be able to use the inbuilt query language.