Java 7 update 12 issue with MethodHandles.catchException.

Christian Thalinger christian.thalinger at oracle.com
Wed Jan 2 17:20:04 PST 2013


On Dec 21, 2012, at 2:22 AM, "MacGregor, Duncan (GE Energy Management)" <duncan.macgregor at ge.com> wrote:

> Okay I've been experimenting a bit before you sent that, and If the code
> cache is set to something rather large then we seem to get good
> performance on large applications anyway, though we do still see lambda
> form classes getting loaded (though at a lower rate once everything has
> been running for a while) so without lambda form caching running instances
> would almost certainly end up running out of permgen eventually. I'll keep
> tracking application performance and memory usage on 7u12 and 8, and see
> what difference caching and incremental unlinking make.
> 
> BTW. Is there any good way to get instrumentation on code cache usage?
> Either in real time or by processing the compilation log afterwards? I can
> piece together a lot from the compilation log method and make_not_entrant
> information so I can see when things have become zombies, but I don't see
> anything in there to indicate when zombies have actually been flushed.

+PrintMethodFlushing should log the current code cache state.  I don't think we have anything that prints flushed methods.

-- Chris

> 
> On 20/12/2012 19:27, "Christian Thalinger"
> <christian.thalinger at oracle.com> wrote:
> 
>> 
>> On Dec 13, 2012, at 7:55 AM, "MacGregor, Duncan (GE Energy Management)"
>> <duncan.macgregor at ge.com> wrote:
>> 
>>> Thanks. Meanwhile I've patched the two offending parts of the database
>>> library to work round the problem. Although our benchmarks run quite
>>> nicely on 7u12 and 8 (give or take a couple of slowdowns) full
>>> applications really aren't performing well right now.
>>> 
>>> Startup time on 7u12 has increased by somewhere between 50 and 70%,
>>> which seems to be due to the new LambdaForm infrastructure being slower
>>> on initialisation/initial calls. That isn't great but is something I
>>> think we can live with and will probably push us to look at ways of
>>> improving overall startup time.
>>> 
>>> The large number of LamdbaForms created means permgen usage has
>>> increased substantially ­ it was over 300MB by the time the applications
>>> has started.
>>> 
>>> Compilation never really settles down during use of the app. I'll look
>>> into this (I don't think it ever really settled down on 7u9 either but
>>> performance was considerably better).
>>> 
>>> I'm going to try running everything with PrintCompilation and
>>> LogCompilation to try and work out why compilation isn't settling down
>>> and narrow the problem down.
>> 
>> You are on the bleeding edge right now even with 7u12 (since the code is
>> basically the same as in 8).  For better performance we need to wait for
>> two changes:
>> 
>> 1. incremental inlining: http://bugs.sun.com/view_bug.do?bug_id=8005071
>> 
>> 2. LambdaForm caching (can't find the bug number right now)
>> 
>> These must (and will) go into 7u12 and 8.
>> 
>> -- Chris
>> 
>>> 
>>> From: John Rose <john.r.rose at oracle.com<mailto:john.r.rose at oracle.com>>
>>> Reply-To: Da Vinci Machine Project
>>> <mlvm-dev at openjdk.java.net<mailto:mlvm-dev at openjdk.java.net>>
>>> Date: Wednesday, 12 December 2012 19:42
>>> To: Da Vinci Machine Project
>>> <mlvm-dev at openjdk.java.net<mailto:mlvm-dev at openjdk.java.net>>
>>> Subject: Re: Java 7 update 12 issue with MethodHandles.catchException.
>>> 
>>> On Dec 12, 2012, at 11:33 AM, Christian Thalinger wrote:
>>> 
>>> That helps.  I can't recall code that has a "8 argument limitation" and
>>> does something else with 9+.  Maybe John has an idea.
>>> 
>>> The bug is probably in GuardWithCatch.invoke_V, in this file:
>>> 
>>> http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/
>>> lang/invoke/MethodHandleImpl.java
>>> 
>>> I'll look into it.
>>> 
>>> ‹ John
>>> _______________________________________________
>>> mlvm-dev mailing list
>>> mlvm-dev at openjdk.java.net
>>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>> 
>> _______________________________________________
>> mlvm-dev mailing list
>> mlvm-dev at openjdk.java.net
>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
> 
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev



More information about the mlvm-dev mailing list