Движок Nashorn Javascript с использованием процессора путем загрузки классов через минуту?

Используя Java8u60, nashorn

Цель состоит в том, чтобы около 2000 функциональных объектов взаимодействовали с каждым собственным объектом API каждые 500 мсек. Каждый сценарий представляет собой от 5 до 20 строк кода.

Я вижу, что после первоначального всплеска использования ЦП, использованного для компиляции скрипта, он работает довольно хорошо. Но примерно через минуту происходит еще один всплеск использования ЦП, и загружается огромное количество классов.

Я хотел бы знать, почему это происходит (потому что он уже был скомпилирован, верно?), И как можно повлиять на это явление.

Ниже показан эффект при использовании JvisualVM.
Первоначально:
 initial_running_and_compile

Через минуту загружается около 10000 классов. См. Использование ЦП и всплески в правом нижнем углу графика:
running_a_minute_and_classesloaded

Некоторые детали:
Каждый объект-функция имеет свой собственный SimpleScriptContext.
Я использую Swingworkers для первой компиляции, а при следующих вызовах выполняю скомпилированную функцию.
У меня есть ScriptEngine экземпляра на поток (Swingworkers используйте пул из 10 потоков, жестко запрограммированных в JDK) в надежде, что компиляция не заблокирует другие потоки.
Каждый экземпляр SwingWorker выполняет один CompiledScript для всех объектов-функций, имеющих одинаковый текст сценария, только один раз, а затем завершает работу (имеется около 30 уникальных сценарии.)
Эти SwingWorkers создаются и выполняются каждые 500 мсек.
Это код, который я использую для выполнения объекта-функции:

/* 
 * test for script change, if so, recompile 
 */
if (e.cCompiledScript == null) {
  /* compile once, but don't when an error is not cleared */
  if (runner.cErrorString == null) {
    e.initCompiledScript(runner.getScript());
  }
} else {
  /* run the CompiledScript in the (shared)engine with the provided private context */
  e.cCompiledScript.eval(runner.getScriptContext());
}

person Houtman    schedule 24.03.2016    source источник
comment
Какие классы загружаются через минуту? Уточняйте у -XX:+TraceClassLoading.   -  person apangin    schedule 27.03.2016
comment
Первоначально он показывает много строк, содержащих [Loaded java.lang.invoke.LambdaForm$DMH/3175035 from java.lang.invoke.LambdaForm], но на пике загрузки классов он говорит в основном о BMH Profiler Agent Warning: JVMTI classLoadHook: class name is null. [Loaded java.lang.invoke.LambdaForm$BMH/19678099 from java.lang.invoke.LambdaForm] [Loaded java.lang.invoke.LambdaForm$BMH/586680 from java.lang.invoke.LambdaForm] [Loaded java.lang.invoke.LambdaForm$BMH/27194906 from java.lang.invoke.LambdaForm]   -  person Houtman    schedule 29.03.2016
comment
Возможный дубликат профилирования VisualVM зависает при инструментировании классов   -  person Paul Sweatte    schedule 19.04.2017