groovy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alain Stalder <astal...@span.ch>
Subject Re: Re: To ClassValue or not to ClassValue: That is the question!
Date Wed, 11 May 2016 04:57:32 GMT
Also copied:

PS: The source I just posted does not really work, the inner value can 
be garbage collected, so just posted as a "general idea" - not wanting 
to really dive fully into this I am better getting out now... ;)

Alain

On 11.05.16 06:35, Alain Stalder wrote:
> Copied from my comment at 
> https://issues.apache.org/jira/browse/GROOVY-7591 (partially in 
> response to what Craig added there yesterday):
>
> To me the ideal solution would be to drop the "groovy.use.classvalue" 
> system property in Groovy 2.4.7, to always use ClassValue (with Java 7 
> and later), but to give the Java VM a ClassValue that it can garbage 
> collect already without a JVM fix.
>
> Why drop the system property: The matter is complex enough, 
> maintaining more variants than absolutely necessary should be avoided.
>
> Why not wait for a fix in the Java VM: Because even if/when it comes 
> to Java 9/8/7, it will still require people to upgrade their VMs which 
> is not a given at all.
>
> Here is a first attempt to resolve this as simply as possible in 
> principle: A modified version of the test sources that were submitted 
> with the Java VM bug report.
>
> I am simply wrapping the MyClassValue class with another instance of 
> ClassValue that only has weak references to the MyClassValue instance.
>
> This worked on Java 7 and 8. With Java 7 I saw used PermGen rise close 
> to the configured maximum and then it was collected. With Java 8, 
> Metaspace did not even rise, which is important because by default 
> there is no maxium set for Metaspace.
>
> -- See https://issues.apache.org/jira/browse/GROOVY-7591 for Java 
> sources --
>
> I wrap the classes resulting from compiling MyClassValue and 
> MyClassValueWrapper into t/t.jar and then run the test with "java -ea 
> -XX:MaxMetaspaceSize=64m -cp . CVTest" resp. "java -ea 
> -XX:MaxPermGenSize=64m -cp . CVTest".
>
> I know that there is already much more specific work going on with 
> regard to fixing these issues and there might be more issues with 
> garbage collecting classes in the Groovy code - I just wanted to say 
> that it might be good to strive for a solution with minimal complexity.
>
> PS: I hope it is OK to copy this, when I post here, code gets broken 
> up with line breaks, making it possibly harder to read/try out, on the 
> other hand that issue seems like maybe not the ideal place to discuss 
> the issue?
>
> Alain
>


Mime
View raw message