【翻译】Graeme答复:Groovy and JRuby: Enterprise-Ready?

    有博客报道说Groovy并不适合企业,其目的只是在散播FUD(Fear, Uncertainty, Doubt)而已. 此报道如下:
[url=http://www.huxili.com/index.php?cat=reports&id=ID000188]http://www.huxili.com/index.php?cat=reports&id=ID000188[/url]
    此报道以"Groovy and JRuby: Enterprise-Ready?"为题且得出结论是:Groovy还不适合企业仅仅是因为内存泄漏。某些人并不懂语言间习惯用法差异,而简单地放在一起进行对比,当然是无稽之谈了。
    此报道并没有提供任何示例代码,更多的是通过怀疑的方式来验证其正确性,尽管如此报道还是陈述了Groovy运行在以下一些步骤的时候,会导致内存溢出:
[list=1][*] Call shell.evaluate("x = 100")
[*]Call System.gc()
[*]Thread.sleep(1000)
[*]Record used memory
[*]Repeating (1-4)
[/list]
    我要猜一下他们可能用到的Groovy代码,我敢打赌这些代码应该象下面所示那样:
shell = new GroovyShell()
while(true) {
shell.evaluate("x = 100")
sleep(2000)
System.gc()
}

    那么这段代码有什么问题呢?并且是怎样导致内存泄漏呢?答案很简单:每一个GroovyShell实例都有一个内部的类加载器(class
loader),而Groovy一门编译类型的语言,即便是示例中很少的一段脚本都将会被编译成类因此随着时间的流逝,类加载器将会变得越来越大。那么该
如何解决呢?请看如下代码:
while(true) {
new GroovyShell().evaluate("x = 100")
sleep(2000)
}

    这么做,JVM就会自动回收不再使用的GroovyShell (当然包括它的类加载器)了,加载器都被回收了,其旗下的类当然也自然被回收了。JRuby当然不存在这样的问题,因为其本身就是解释性语言。没有相关语言的习惯用法,而仅仅凭借4行脚本代码,就断定一门语言是否适合企业应用,实在是滑稽可笑!所以要提防那些未经你自己证实的所谓的官方展望报告吧!


    至此翻译已经完毕,可是所谓的报道,本人也觉得的很可笑,不过从Graeme的答复中,本人也受益匪浅,也了解到自己对Groovy掌握还是比较肤浅的,继续努力[img]../../../images/smiles/icon_biggrin.gif" alt="[/img]
    其实从报道中也可以看到Groovy正在快速的发展,当然发展过程中不可能避免的有流言蜚语,同时也说明Groovy在备受关注中。
    最后,有几个有意思的链接与大家共享一下 :)
[list][*][url=http://www.infoq.com/cn/news/2008/01/sun_drop_jruby]请愿:Sun,请停止支持JRuby[/url]
[*][url=http://www.nofluffjuststuff.com/blog/guillaume_laforge/2008/01/groovy_not_enterprise_ready_you_re_kidding_.html]Groovy还不适合企业?!开什么玩笑[/url]
[/list]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值