I am not sure, but this situation is not right,
In documentation :
Use lazy code generation strategies - do not compile the entire script at once.
I ran simple script (nashorn/test/examples/array-micro.js) :
$ jjs --persistent-code-cache=true --lazy-compilation=true --optimistic-types=true array-micro.js
after :
$ ls nashorn_code_cache | wc
21 21 710
remove nashorn_code_cache directory...
$ jjs --persistent-code-cache=true --lazy-compilation=false --optimistic-types=true array-micro.js
after :
$ ls nashorn_code_cache | wc
5 5 168
for jdk9 it is reproduce too.