[
https://issues.apache.org/jira/browse/GROOVY-11271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17804211#comment-17804211
]
Daniel Sun commented on GROOVY-11271:
-------------------------------------
The fastest way to fix the issue is abandoning the usage of read lock and use
write lock instead.
> ConcurrentCommonCache causes memory leaks.
> ------------------------------------------
>
> Key: GROOVY-11271
> URL: https://issues.apache.org/jira/browse/GROOVY-11271
> Project: Groovy
> Issue Type: Bug
> Components: ast builder
> Affects Versions: 4.0.7
> Reporter: cong yang
> Priority: Critical
>
> ConcurrentCommonCache uses a read-write lock to wrap CommonCache into a
> thread-safe data structure. However, CommonCache uses the underlying
> LinkedHashMap, which causes conflicts when using the LRU algorithm because
> the LinkedHashMap.get method modifies the internal linked list. This
> conflicts with the read lock used by the get method in ConcurrentCommonCache
> when multiple threads access it. Due to multithreading conflicts, the maximum
> cache size of 64 becomes ineffective, ultimately causing memory leaks.
> Additionally, we have already encountered memory leaks in our production
> environment.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)