You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Andriy Rysin (Jira)" <ji...@apache.org> on 2023/01/26 17:39:00 UTC
[jira] [Created] (GROOVY-10918) Local variable values are not discarded if closures used
Andriy Rysin created GROOVY-10918:
-------------------------------------
Summary: Local variable values are not discarded if closures used
Key: GROOVY-10918
URL: https://issues.apache.org/jira/browse/GROOVY-10918
Project: Groovy
Issue Type: Bug
Affects Versions: 4.0.8
Reporter: Andriy Rysin
Attachments: TestOOM.groovy, TestOOMJ.java, 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)