Performance GroovyShell启动速度惊人地慢

Performance GroovyShell启动速度惊人地慢,performance,groovy,windows-7,groovyshell,Performance,Groovy,Windows 7,Groovyshell,我正在运行interactive,在我的机器上启动它需要分钟(一台Windows 7笔记本电脑,带有Intel i5处理器和4GB内存,因此不是一台古老的计算机,只是一台中间的计算机) 使用groovy或groovyclient和groovyserver运行简单脚本需要一段可接受的时间(最多几秒钟),但在运行groovysh之后,光标开始闪烁几秒钟。。。足够我泡茶的时间,在推特上写下这个问题并大声抱怨(仍然没有提示我写任何代码) 尝试了以下配置 Groovy版本:2.3.4 JVM:1.7.0

我正在运行interactive,在我的机器上启动它需要分钟(一台Windows 7笔记本电脑,带有Intel i5处理器和4GB内存,因此不是一台古老的计算机,只是一台中间的计算机)

使用
groovy
groovyclient
groovyserver
运行简单脚本需要一段可接受的时间(最多几秒钟),但在运行
groovysh
之后,光标开始闪烁几秒钟。。。足够我泡茶的时间,在推特上写下这个问题并大声抱怨(仍然没有提示我写任何代码)

尝试了以下配置

  • Groovy版本:2.3.4 JVM:1.7.0\u 03供应商:Oracle公司操作系统:Windows 7
  • Groovy版本:2.3.4 JVM:1.8.0\u 20供应商:Oracle公司操作系统:Windows 7
而且完全一样

我真的希望能够以REPL风格使用它。有没有人面对并解决过类似的问题?你能为这项工作推荐一种不同的工具吗

正如评论中所建议的那样,我运行了
groovysh-d-v
来启用调试和详细输出,希望看到什么需要这么长的时间

groovysh-d-v的输出
在很长一段时间内,没有进一步的输出,然后在几秒钟内完成整个剩余部分:

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>

它可以是内存,首先确保没有java应用程序在运行(当两个java应用程序在windows中争夺内存时,java表现糟糕——这是一个彻底的系统杀手),但如果是这样的话,我认为groovy的加载速度也会很慢

另一种可能是系统在加载JLine dll时遇到问题。要对此进行测试,请尝试:

Groovysh --terminal=false

它将避免加载JLine--如果没有JLine,您将无法进行上/下/选项卡处理,因此您不希望以这种方式运行,但是如果你知道这是你的问题,你应该可以很容易地在网上找到一些东西,告诉你如何解决它。

是从
-vd
开始的,提供任何线索吗?运行
groovysh-vd
会导致以下错误:
“无法识别的选项:-vd错误:jvm创建失败,代码为-1:未知错误”
只是
-d
?查看帮助。可能是它的
/d
或其他什么windowizm@cfrick使用输出进行更新,现在使用
-d-v
运行,如果输出有任何有意义的不同,我将发布输出。我尝试过删除除控制台之外的所有内容。此外,我使用的许多工具,包括IDE和服务器都是Java应用程序,因此我无法避免它们。运行
Groovysh-console=false
会产生
无法识别的选项:-console=false
,而
Groovysh--console=false
也是如此。这看起来像一个变量,所以我也尝试了
Groovysh-Dconsole=false
,这次Groovysh运行了,但启动时间和以前一样长。我想我会尝试用visualvm分析控制台,也许它会告诉我发生了什么。最后的办法是从源代码构建它并进行调试。但我需要一些空闲时间来做这件事。幸运的是,这对我来说并不是一个很大的拦截器,因为我可以很好地运行GroovyConsole窗口。@toniedzwiedz我真的很抱歉,我是根据内存说的,但弄错了。试试“-terminal=false”或“-terminal=null”(这次测试!)我相信它们的意思是一样的,都应该禁用JLine。答案相应更新。谢谢更新。这一次它实际上运行了控制台,但不幸的是它仍然需要几分钟才能启动。我只是做了一个快速测试。“groovy-e”while(true)根据process mgr的报告,运行需要65mb,groovysh从126开始,很快就达到167mb。如果您有其他java应用程序在运行,那么内存可能是一个因素。当groovy启动时,windows的运行速度是否非常慢?您的其他java应用程序是否响应迅速?如果groovysh在任何其他java应用程序之前运行,它是否更好?
Groovysh --terminal=false