jenkinsci / jenkinsci/plot-plugin

[JENKINS-51532] Plot plugin extreme memory leak with matrix jobs

Open
#286 1 comment 0 reactions 0 assignees View on GitHub
component:plot-plugin imported-jira-issue priority:minor resolution:unresolved
Dominant language
Java
Stars
62
Forks
93
Avg merge
1d 17h
Merged PRs (30d)
1

Description

After a day or two, our Jenkins master becomes very unresponsive, taking 100% CPU of all available cores. The response time drops to tens of seconds, or sometimes even minutes to load a single page.

Investigation with VisualVM shows much garbage collection taking place, with the heap nearly maxed out (at 1GB use of 1.25GB max). Looking at a heap snapshot, I discovered that the majority of memory is taken up by String[] objects, containing 5-tuples of Strings (referencing char[] arrays in turn). There are over a million of these small string arrays, each having contents similar to ["35300", "Size", "709", "1526866800302", ""].

Tracing the references of the objects reveals that they are held by the rawPlotData of MatrixPlotPublisher objects. rawPlotData is itself an array; a single sample object in our snapshot contains 106710 string arrays like the one above.

The most likely plot that's causing this is a CSVSeries plot tracking the size of ~7000 generated files (per matrix build). That's still several orders of magnitude less than the number of objects being built internally.

 

---
Originally reported by cameron314, imported from: Plot plugin extreme memory leak with matrix jobs


  • assignee: vgaidarji
  • status: Open
  • priority: Minor
  • component(s): plot-plugin
  • label(s): memory-leak, plugins
  • resolution: Unresolved
  • votes: 1
  • watchers: 2
  • imported: 20260512-210953

Raw content of original issue

After a day or two, our Jenkins master becomes very unresponsive, taking 100% CPU of all available cores. The response time drops to tens of seconds, or sometimes even minutes to load a single page.

Investigation with VisualVM shows much garbage collection taking place, with the heap nearly maxed out (at 1GB use of 1.25GB max). Looking at a heap snapshot, I discovered that the majority of memory is taken up by String[] objects, containing 5-tuples of Strings (referencing char[] arrays in turn). There are over a million of these small string arrays, each having contents similar to ["35300", "Size", "709", "1526866800302", ""].

Tracing the references of the objects reveals that they are held by the rawPlotData of MatrixPlotPublisher objects. rawPlotData is itself an array; a single sample object in our snapshot contains 106710 string arrays like the one above.

The most likely plot that's causing this is a CSVSeries plot tracking the size of ~7000 generated files (per matrix build). That's still several orders of magnitude less than the number of objects being built internally.
 

  • environment: Jenkins 2.107.2 + Plot plugin 2.04; master running on openjdk-1.8.0/linux.

1 attachment

- [memory histogram of our Jenkins controller.png](https://raw.githubusercontent.com/jenkinsci/attachments-from-jira-issues-last/refs/heads/main/attachments/61966/memory%20histogram%20of%20our%20Jenkins%20controller.png)
> ![memory histogram of our Jenkins controller.png](https://raw.githubusercontent.com/jenkinsci/attachments-from-jira-issues-last/refs/heads/main/attachments/61966/memory%20histogram%20of%20our%20Jenkins%20controller.png)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.