[
https://issues.apache.org/jira/browse/GROOVY-10773?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17637884#comment-17637884
]
Val E commented on GROOVY-10773:
--------------------------------
I'd happy to test, but I'm having trouble building with 4.0.7-SNAPSHOT. Gradle
complaining about missing groovy-groovysh jar.
I haven't pulled anything from Apache's SNAPSHOT repo before, is there
something else that it requires besides the repo declaration?
----
{code:java}
repositories {
mavenCentral()
maven {
url "https://repository.apache.org/snapshots/"
}
}
dependencies {
implementation 'org.apache.groovy:groovy-all:4.0.7-SNAPSHOT'
}
{code}
-----
{noformat}
Execution failed for task ':compileGroovy'.
> Could not resolve all files for configuration ':compileClasspath'.
> Could not find org.apache.groovy:groovy-groovysh:4.0.7-SNAPSHOT.
Searched in the following locations:
-
https://repo.maven.apache.org/maven2/org/apache/groovy/groovy-groovysh/4.0.7-SNAPSHOT/maven-metadata.xml
-
https://repo.maven.apache.org/maven2/org/apache/groovy/groovy-groovysh/4.0.7-SNAPSHOT/groovy-groovysh-4.0.7-SNAPSHOT.pom
-
https://repository.apache.org/snapshots/org/apache/groovy/groovy-groovysh/4.0.7-SNAPSHOT/maven-metadata.xml
-
https://repository.apache.org/snapshots/org/apache/groovy/groovy-groovysh/4.0.7-SNAPSHOT/groovy-groovysh-4.0.7-20221123.003952-24.pom
Required by:
project : >
org.apache.groovy:groovy-all:4.0.7-SNAPSHOT:20221122.052915-21
project : >
org.apache.groovy:groovy-all:4.0.7-SNAPSHOT:20221122.052915-21 >
org.apache.groovy:groovy:4.0.7-SNAPSHOT:20221122.052915-21 >
org.apache.groovy:groovy-bom:4.0.7-SNAPSHOT:20221123.161852-56{noformat}
> Groovy 4 memory leak due to presumptuous caching in
> org.codehaus.groovy.vmplugin.v8.CacheableCallSite
> -----------------------------------------------------------------------------------------------------
>
> Key: GROOVY-10773
> URL: https://issues.apache.org/jira/browse/GROOVY-10773
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 4.0.5
> Environment: Java 1.8, 11, 14
> Groovy 4.0.3 4.0.4, 4.0.5
> Reporter: Val E
> Priority: Major
> Attachments: MemLeakContainer.groovy, MemLeakItem.groovy,
> MemLeakTest.zip, TestScript.groovy, build.gradle, heapdump.png,
> image-2022-09-29-13-21-57-256.png, image-2022-09-30-11-01-13-234.png,
> image-2022-09-30-11-05-57-860.png, image-2022-09-30-11-24-49-168.png,
> visualvm_mem_sampler.png
>
>
> It looks like method handles caching is creating memory leaks in Groovy 4,
> because in addition to the method handle it is also storing the results of
> the method execution in
> *_org.codehaus.groovy.vmplugin.v8.CacheableCallSite.latestHitMethodHandleWrapper_*
>
> These cached method handles are not subject to garbage collection. Since the
> cached handler is also storing the result of the method execution, which can
> be any arbitrary object, it will also prevent the object itself and any of
> its transitive properties from being garbage collected. In our case the
> method execution often produced very large maps which caused our prod servers
> to very quickly bog down and need restarts.
>
> I have tried this with Groovy 4.0.4 and 4.0.5, as well as Java 1.8, 11, and
> 14; all produced this memory leaks.
> However Groovy 3.0.5 did *NOT* produce this leak.
>
> I have attached a very simple Gradle project. It produces 5000 MemoryLeakItem
> objects. Nothing special about these objects themselves, just easy to find in
> VisualVM and heap dumps. A container object that does some basic dynamic
> method resolution via a methodMissing and a TestScript to run and pause
> execution, so a heap dump can be created or VisualVM inspected.
>
> To reproduce the leak:
> Run TestScript.groovy, and when it pauses for keyboard input, check VisualVM
> or a heap dump.
> !image-2022-09-29-13-21-57-256.png|width=471,height=421!
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)