On 20/05/2025 03:42, Dmytro Ukhlov wrote:
Hello!

I created PR is scope of jenkins-core project:
https://github.com/jenkinsci/jenkins/pull/10659
Jira ticket: https://issues.jenkins.io/browse/JENKINS-75675

In this PR i propped to override
protected Object getClassLoadingLock(String className)
method and use weak references for lock objects

Jenkins is a plugable platform, each plugin has its own class loader
and its parallelLockMap may consume 10mb of RAM. As a result it might
have 2gb overhead if ~200 plugins installed.

Jenkins maintainers ask me to consider making this improvement in base

This is an issue for "parallel capable" class loaders, esp. those that don't directly delegate. I don't know what topology is used in the Jenkins plugin class loaders and whether these class loader need to parallel capable.

Expunging entries isn't really feasible, at least not without changing the spec.

JDK-8005233 [1] has a write-up from David Holmes on this topic and a prototype for "fully concurrent" class loaders. This work has been parked for several years. Maybe some day it will get dusted off and a JEP drafted (due to the significance).

-Alan

[1] https://bugs.openjdk.org/browse/JDK-8005233

Reply via email to