java groovy集成_Java集成Groovy性能优化与最佳实践初探

本文探讨了Java集成Groovy的场景、优点、常见集成方法及性能优化方案。通过性能测试,作者发现GroovyShell性能不佳,GroovyClassLoader和GroovyScriptEngine在性能上有显著差异。通过invokeDynamic和@CompileStatic可以优化性能,接近原生Java代码的执行效率。
摘要由CSDN通过智能技术生成

Java集成Groovy性能优化与最佳实践初探

一.使用场景与目的:

Groovy是运行在JVM上的和Java类似,但是写法更精简的,动态类型语言。

Java集成Groovy在我们这里使用的场景是业务同学自行编辑配置的DSL转成groovy为目标语言,而groovy需要最终集成到我们的MWP-ROOTER Java代码中。由于这里集成到MWP后用户的调用量会比较大,同时对性能有要求(甚至会担心一些groovy的误用把JVM搞挂T_T),所以在groovy集成到Java时,我们不得不关注下集成性能。

而在业界,groovy作为JVM动态语言,其中一个非常重要的应用场景,就是用在这种对用户可配置的,动态加载可热升级,对Java代码做扩展的场景中。

用groovy作为目标语言集成在Java中有这么几个优点:

a.和JAVA集成友好(需要集成到MWP-ROOUTER)

b.部署运维方便(运行在JVM上不需要其他特殊环境)

c.动态语言,用groovy构建DSL支持较好,也是业界常用的做法

d.经过一系列的优化性能上和原生JAVA接近,同时经过优化可以解决GC相关问题

e.学习接入成本低

二.坑:

Java集成Groovy有一些坑需要踩,同时在性能优化上注意的点非常多(包括执行效率、GC、Perm区、codecash等等)。而目前网上的一些文章对于性能关注的比较少,并且针对的Groovy版本都比较老,一些建议已经过时了,同时比较零碎,没有形成一个体系。

所以这里花了一些时间做了一些探索和性能测试,有了一个初步的性能优化和接入实践的方案,系统的总结一下和大家一起讨论一下,看看是否是否还有点没有考虑到位,同时因为自己也是刚接触groovy,如果哪里理解有误,欢迎大家帮忙指出。

如果没有时间看过程,可以跳到最后一步直接看结论。

三.常用集成方法:

Java集成Groovy原生有三种方法。

1通过GroovyShell类

示例代码:

0818b9ca8b590ca3270a3433284dd417.png

系统性能:

看下面的性能截图可以发现,CPU还是有一定的使用率的(这么简单的场景),同时可以看到GC也不好,已装入的类快速上升,同时不管是堆还是Perm区的使用量都在快速增长,按照这个用法跑一会Perm区就要爆了。

0818b9ca8b590ca3270a3433284dd417.png

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值