Groovy shell ужасно медленно запускается

Я запускаю интерактивную Groovy Shell, и буквально минуты запустите на моей машине (ноутбук с Windows 7 с процессором Intel i5 и 4 ГБ ОЗУ, так что это не древний компьютер, а просто средний)

Запуск простых скриптов с использованием groovy или groovyclient и groovyserver занимает приемлемое количество времени (максимум несколько секунд), но после запуска groovysh курсор просто начинает мигать... достаточно долго, чтобы я заварил чай, написал этот самый вопрос и разглагольствовал об этом в Твиттер (и до сих пор нет приглашения написать какой-либо код)

Пробовал это со следующими конфигурациями

  • Версия Groovy: 2.3.4 JVM: 1.7.0_03 Поставщик: Oracle Corporation ОС: Windows 7
  • Groovy Версия: 2.3.4 JVM: 1.8.0_20 Поставщик: Oracle Corporation ОС: Windows 7

и это точно так же.

Я бы очень хотел использовать его в стиле REPL. Кто-нибудь сталкивался и решал подобные проблемы? Можете ли вы порекомендовать другой инструмент для работы?

Как было предложено в комментариях, я запустил groovysh -d -v, чтобы включить отладку и подробный вывод, в надежде увидеть, что занимает так много времени.

Выход groovysh -d -v

DEBUG [org.codehaus.groovy.tools.shell.BufferManager] Created new buffer with index: 0
DEBUG [org.codehaus.groovy.tools.shell.BufferManager] Buffers reset
DEBUG [org.codehaus.groovy.tools.shell.Parser] Using parser flavor: rigid
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: ?
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :help
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :quit
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :exit
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: import
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :display
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :clear
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :show
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :inspect
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :purge
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :edit
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: .
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :load
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :save
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :record
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :history
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :alias
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :set
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :register
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :doc

Очень долго дальше не выводится и потом весь отдых за считанные секунды:

DEBUG [org.codehaus.groovy.tools.shell.Groovysh] Terminal (jline.AnsiWindowsTerminal@66f57048)
DEBUG [org.codehaus.groovy.tools.shell.Groovysh]     Supported:  true
DEBUG [org.codehaus.groovy.tools.shell.Groovysh]     ECHO:       (enabled: false)
DEBUG [org.codehaus.groovy.tools.shell.Groovysh]     H x W:      41 x 169
DEBUG [org.codehaus.groovy.tools.shell.Groovysh]     ANSI:       true
DEBUG [org.codehaus.groovy.tools.shell.Groovysh]     Direct:     true
DEBUG [org.codehaus.groovy.tools.shell.InteractiveShellRunner] Using history file: C:\Users\Tomek\.groovy\groovysh.history
Groovy Shell (2.3.4, JVM: 1.8.0_20)
Type ':help' or ':h' for help.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[1] for command: :help
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[2] for command: ?
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[3] for command: :exit
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[4] for command: :quit
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[5] for command: import
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[6] for command: :display
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[7] for command: :clear
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[8] for command: :show
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[9] for command: :inspect
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[10] for command: :purge
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[11] for command: :edit
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[12] for command: :load
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[13] for command: .
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[14] for command: :save
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[15] for command: :record
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[16] for command: :history
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[17] for command: :alias
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[18] for command: :set
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[19] for command: :register
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[20] for command: :doc
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Refreshing the completer list
DEBUG [org.codehaus.groovy.tools.shell.InteractiveShellRunner] Running
groovy:000>

person toniedzwiedz    schedule 07.10.2014    source источник
comment
начинается с -vd дает какие-то подсказки?   -  person cfrick    schedule 07.10.2014
comment
Запуск groovysh -vd приводит к следующей ошибке: "Unrecognized option: -vd error: jvm creation failed with code -1: unknown error"   -  person toniedzwiedz    schedule 07.10.2014
comment
только 1_? проверьте справку. может это /d или какой-то другой оконизм   -  person cfrick    schedule 07.10.2014
comment
@cfrick обновил вывод, сейчас работает с -d -v, я опубликую вывод, если он каким-либо значимым образом отличается.   -  person toniedzwiedz    schedule 07.10.2014


Ответы (1)


Это может быть память, убедитесь, что никакие java-приложения не запущены в первую очередь (Java ужасно работает, когда 2 java-приложения борются за память в Windows - это полный системный убийца), но если бы это было так, я бы подумал, что groovy будет загружаться медленно слишком.

Другая возможность заключается в том, что в вашей системе могут возникнуть проблемы с загрузкой dll JLine. Чтобы проверить это, попробуйте:

Groovysh --terminal=false

Это позволит избежать загрузки JLine - без JLine вы не получите обработку вверх / вниз / вкладку, поэтому вы не хотите работать таким образом, но если вы знаете, что это ваша проблема, вы легко сможете найти что-то в Интернете, рассказывающее вы как это исправить.

person Bill K    schedule 20.11.2014
comment
Я пытался убить все, кроме консоли. Кроме того, многие инструменты, которые я использую, в том числе IDE и серверы, являются Java-приложениями, поэтому я просто не могу их избежать. Выполнение Groovysh -console=false дает Unrecognized option: -console=false, так же как и Groovysh --console=false. Это похоже на переменную, поэтому я также попробовал Groovysh -Dconsole=false, на этот раз Groovysh запустился, но запустился так же долго, как и раньше. - person toniedzwiedz; 20.11.2014
comment
Я думаю, я попробую профилировать консоль с помощью визуальной виртуальной машины, может быть, это скажет мне что-то о том, что происходит. В крайнем случае это сборка из исходников и отладка. Но мне нужно немного свободного времени, чтобы сделать это. К счастью, это не сильно мешает мне, потому что я могу нормально запустить окно GroovyConsole. - person toniedzwiedz; 21.11.2014
comment
@toniedzwiedz Мне очень жаль, я сказал это по памяти и ошибся. попробуйте --terminal=false или --terminal=null (на этот раз проверено!) Я полагаю, что они означают одно и то же, оба должны отключить JLine. Ответ обновлен соответственно. - person Bill K; 21.11.2014
comment
Спасибо за обновления. На этот раз он фактически запустил консоль, но, к сожалению, запуск занял несколько минут. - person toniedzwiedz; 21.11.2014
comment
Я только что сделал быстрый тест. groovy -e 'пока (правда);' занимает 65 МБ для запуска, как сообщает Process MGR, groovysh начинается со 126 и быстро достигает 167 МБ. Если у вас запущены другие Java-приложения, то память может быть фактором. Во время запуска groovy окна работают очень вяло? Отвечают ли ваши другие Java-приложения? Если groovysh запускается перед любыми другими java-приложениями, это лучше или то же самое? - person Bill K; 21.11.2014
comment
Нет, Windows ведет себя нормально, как и другие Java-приложения. Я пробовал запускать просто groovysh, без каких-либо других приложений, и поведение оставалось прежним. - person toniedzwiedz; 21.11.2014
comment
Тогда это не память. Поскольку это не связано с памятью/процессором, я полагаю, что это может быть тайм-аут. Groovysh пытается открыть несколько файлов конфигурации при запуске, я полагаю, что тайм-аут может вызвать такое поведение. Может быть интересно узнать, что это всегда было одно и то же время — например, 1 или 2 минуты, что указывает на то, что что-то истекло по тайм-ауту (доступ к файлу по сети?). Я никогда не видел такого поведения, и я действительно не могу придумай что-нибудь еще. Извините, я не могу больше помочь - не могу проголосовать за себя, но, возможно, это поможет следующему парню (в сочетании с вашим возможным решением) - person Bill K; 21.11.2014