elastic / elastic/apm-agent-java
Optimize the IndyBootstrap#getClassNamesFromBundledPlugin method to reduce memory usage caused by package scanning
- Dominant language
- Java
- Stars
- 594
- Forks
- 338
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 25
Description
## Is your feature request related to a problem?


## Describe the solution you'd like
When the program starts executing the IndyBootstrap#bootstrap method, there will be logic to obtain the class name list of the specified plug-in. However, in this logic, I think some optimizations can be made. As shown in the figure, in the original method, multiple threads may concurrently request the data of the same pluginPackage. At this time, multiple jar packages will be scanned, and there will also be a PackageScanner global lock in it; suppose we advance this lock and based on pluginPackage distinguishes different locks, which can improve application startup performance and reduce memory usage caused by package scanning. I tested it locally and it works.
## Describe alternatives you've considered
Contributor guide
Assessment
This issue has not been assessed yet.