[
https://issues.apache.org/jira/browse/GROOVY-10918?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17687627#comment-17687627
]
Andriy Rysin commented on GROOVY-10918:
---------------------------------------
So initially I thought it was related to closures, but then I used inner class
instead, and it has the same problem - see comment above with TestOOMIcj.java -
same code runs in Java but gets OOM in groovy.
It looks like a problem with local output variables not being cleaned up.
Reusing 's' leads to OOM even though previous values should be discarded, if I
create new var for each transformation (and set previous ones to null) - this
works.
Java seems to be able to drop intermediate values but groovy does not.
> Memory leak: local variable values are not discarded
> ----------------------------------------------------
>
> Key: GROOVY-10918
> URL: https://issues.apache.org/jira/browse/GROOVY-10918
> Project: Groovy
> Issue Type: Bug
> Components: groovy-runtime
> Affects Versions: 4.0.9
> Reporter: Andriy Rysin
> Priority: Major
> Labels: MemoryLeak
> Attachments: TestOOM.groovy, TestOOMIcj.java, TestOOMJ.java,
> TestOOM_works.groovy, groovy_oom.png
>
>
> When I run the code below with 3 statements with closures inside the method
> the local var (parameter) values (all 4 of them) are staying in memory.
> I don't see the same problem if I run corresponding Java code with lambdas.
> Run TestOOM.groovy with
> -Xmx600M -XX:+HeapDumpOnOutOfMemoryError
> Notice groovy fails:
> Y
> Z
> java.lang.OutOfMemoryError: Java heap space
> Dumping heap to java_pid147612.hprof ...
> Heap dump file created [497819587 bytes in 0.136 secs]
> Caught: java.lang.OutOfMemoryError: Java heap space
> java.lang.OutOfMemoryError: Java heap space
> at test.TestOOM.test(TestOOM.groovy:31)
> at test.TestOOM.run(TestOOM.groovy:41)
> But Java version does not.
> It looks like all the values of s are still in memory (see screenshot), even
> though previous values should be discarded.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)