Nashorn heap profiling

Josh Fleming jfleming at linkedin.com
Thu Apr 30 13:32:00 UTC 2015


Hi folks,

What's the best way to do heap profiling of JavaScript code in Nashorn? We're running a large JavaScript framework on Nashorn, and recently I had to track down a couple memory leaks. This turned out to be a painful process. When using a heap profiler like YourKit, it's very tedious to find the correspondence between what you see in a JVM retention path and the exact JavaScript code it originates from: there are multiple layers of JVM representation, and the naming is a bit cryptic.

Eventually I fell back on a manual process of drilling down to the "JO* -> map -> properties -> list" linked list to find a unique property name within each JavaScript object, and used what I found there to grep the JavaScript code. The situation is better if you happen to come upon a closure, because the "data -> functionName" property in ScriptFunctionImpl includes a line number. But it seems like there must be a better way.

Any guidance would be much appreciated.


Thanks,

jf



More information about the nashorn-dev mailing list