`

java:放弃groovy这个玩具(scala, groovy, jruby,jython,动态语言)

 
阅读更多
放弃groovy这个玩具 ,因为它只是一个玩具, 无法应用于实际.

之前我用groovy写了一个网站, deploy到tomcat上.

运行一段时间之后,tomcat就开始失控,内存占用大的出奇 , 最后导致服务器死机!

为什么会这样呢? 我的理解->

原因大概在于groovy为了实现动态类型, 大量使用了反射,

并且在很大程度上侵入了java基础类.

加上groovy现在的开发者水平不高,

导致程序的表现往往不合预期, 内存的管理上存在问题!

即时GC不出问题时,groovy编译出来的类也需要消耗更多的内存,

多到实在无法使用, 甚至限制代码规模!

如果你在groovy项目用了许多类(比如通过.jar包来引入),并在代码中import并使用, 你就会发现一般的机器内存显然不足了.

因为groovy会对几乎所有用到的类,都做一遍侵入性改造 ,以使它们表现得动态!

最终的结果就是, groovy号称与java无缝集成,却恰恰因为无缝集成而侵入了java本身, 使得整个系统变得混乱, 甚至不可用!

结果是: groovy 中看,不中用!

所以另一种:可以编译到.class,并且使用java 类, 但不侵入java本身的动态语言,可能是更好的选择!

保持一定的层次, 避免太紧的耦合, 看来是非常必要的.

不然,出了问题,如何确定问题的原因呢?
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics