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

150 天前
 karottc

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

前文:

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

quarkus-graalvm 可以救 Java native 一命

程序功能如下:

这几天的结果如下:

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

20399 次点击
所在节点    Java
152 条回复
bronyakaka
150 天前
非要用 springboot 这种重量级框架那还怪 java 吃内存干什么,java 技术栈也有很多轻量级框架。go 写 web 真的超级难用,只适合很简单的业务逻辑
keepRun
150 天前
现在手机普遍都 12g 内存了,内存其实很便宜,国内的流量带宽才是跟金子一样
march1993
150 天前
内存虽然越来越便宜,但是 CPU 的 cacheline 其实近十年也没有太大的长进,省内存可能会带来性能上的优势
youyang
150 天前
@keepRun 运营商还天天说亏损呢
jackmod
150 天前
golang 学起来确实快,需求驱动,入门不到 4 小时。
我也准备把 python 写的差不多稳定的原型改成 go 作为学习。
至于 rust ,真就下次一定了(
darrh00
150 天前
gin 和 springboot 相比,完善度有多少?
maigebaoer
150 天前
@bronyakaka 同意。Go 写 web 真的不够酸爽
qping
150 天前
@karottc 没用过 kotlin native ,为什么会不支持 mysql ,是 kotlin native 不能用 mysql 的 jdbc 驱动包了?
Leviathann
150 天前
@qping kotlin native 是用 llvm 编译成机器码的,怎么支持运行在 jvm 上的 jar 文件
qping
150 天前
@Leviathann 了解了,看起来是只能用一些 kotlin 的标准库了,不过问 chatgpt 说是可以用 c/c++的 mysql 客户端
BeiChuanAlex
150 天前
如果这么说,如果用 c 写,那么不是内存占用更少了
SeaTac
150 天前
你站一天天的都是什么牛鬼蛇神
irezpeng
150 天前
哈哈哈哈,语言无好坏,喜欢博主这种折腾的精神,无非就是多学一门语言而已,以前看左耳朵耗子博客,大佬也同时学了多门语言,还运用的不错 rust 就是跟着左耳朵耗子入坑的,个人主职也是 Java ,除了 Java ,我 vue3 、node 、typescript 、js 、html 、cs 、rust 、shell 、python 也是能通水平、同时我原型也画的还可以,工具只是实现目的的工具
chendy
150 天前
连续剧是吧?楼主和 HotSpot 内存占用的爱恨情仇
[Java 很强,但是 Java 的路还很长]( https://v2ex.com/t/950472)
[quarkus-graalvm 可以救 Java native 一命]( https://v2ex.com/t/1057699)
[果然吃内存,一个简单的 Java 程序就占用了 250M 内存]( https://v2ex.com/t/1055770)

可以理解楼主的心情,因为我年轻的时候也喜欢抠这些东西,什么内存占用什么 gc 时间什么线程池参数
所以还是建议把精力用在更有深度的地方,别天天跟这些玩具较劲
msg7086
150 天前
等人长大了就知道,能早点下班,能多拿点钱,比什么都重要。
要是 Java 能让我一年多拿十万块钱,别说 250M 内存了,250G 内存我都喂给你。
dbpe
150 天前
@chendy +1 现在写复杂业务..搞 java...简单就 GO,影音相关就 C/c++
bhoppi
150 天前
每次见到这种讨论都会有很多人说 Spring 太重了云云。我没学过 Spring ,
bhoppi
150 天前
我之前在别的语言用过不少很重的框架,基本上不用的模块是不会占用
bhoppi
149 天前
抱歉,不经常在 V2EX 发言,感觉 V2EX 的移动网页版有问题,一不小心就把文字发出去了,而且我没找到删除和修改的地方,因此请忽略上两层的回复。
我想表达的是,每次这种讨论都会有很多人说 Spring 太重了,我就有疑惑,我没用过 Spring 但也用过别的语言的比较重的框架,基本上不用的模块是不会占用内存的。难道 Spring 的设计是,不管你用不用里面的功能,只要引入了库,就会造成大量的基础开销么?
flytsuki
149 天前
有空对比一下 dotnet aot 么。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1058986

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX