Review request for JDK-8006559: Octane:pdfjs leaks memory, runs slower iteration to iteration

Hannes Wallnoefer hannes.wallnoefer at oracle.com
Fri Apr 26 07:04:10 PDT 2013


Please review JDK-8006559: Octane:pdfjs leaks memory, runs slower 
iteration to iteration

http://cr.openjdk.java.net/~hannesw/8006559/

What happened in pdfjs was that each new function instance created a 
prototype object that was registered as property listener with 
Object.prototype. Although we were using WeakReference for this the 
references themselves where only cleared when a property on 
Object.prototype was added, modified, or deleted, which never happens 
with pdfjs.

I tried a few solutions and settled on using WeakHashMap because it 
allows for efficient removal both through GC and manual removal. This 
makes it impossible for us to support the listenersDead counter so I 
removed it. I also made instantiation of the prototype property of 
script functions lazy.

Pdfjs score now is > 3000 on my laptop and stable (before it peaked at 
1300 before starting to dive).

Hannes


More information about the nashorn-dev mailing list