250M 的 Java 程序,用 go 重构,只需要 8M

13次阅读

共计 568 个字符,预计需要花费 2 分钟才能阅读完成。

把之前的 java 程序,这周学了下 golang,然后用 golang 重构了下,稳定运行之后内存占用 8M。

前文:

果然吃内存,一个简单的 Java 程序就占用了 250M 内存

quarkus-graalvm 可以救 Java native 一命

程序功能如下:

  • 每 10 分钟抓取某个链接的数据
  • 抓取到的内容和 mysql 里面已有的内容作对比
  • 存在就更新,不存在就插入到 mysql 中
  • 每天早上 10 点发送一个企业微信通知
  • 提供一个 rest 接口,上面的功能,可以通过定时触发,也可以通过接口手动触发(保留为了调试和验证程序情况,稳定之后几乎不会调用)。
  • 使用了 gin + gorm + cron 库(因为之前的 java 程序用了 sprinboot, 所以 go 我也特地选了大的库来使用)。

这几天的结果如下:

java springboot: 250M

java(无框架):90M

java, quarkus + graalvm + native: 50M

python: 20M

go: 8-10M。


本来想用下 rust, 发现如果不系统的学习,根本没发写出正常的程序,暂时放弃了。


go 在资源受限的情况下,确实表现很好。之前我是排斥学 go 的,这次做项目发现,也不是不能接受。我之前写 C 的,要啥啥没有,现在有了 go, 就是 c with gc,而且库多(相比于 c)。而且交叉编译非常方便。

不过工作中暂时用不到 go,玩完了。我还是选择 kotlin

正文完
 0