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.