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

149 天前
 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

20379 次点击
所在节点    Java
152 条回复
tanranran
149 天前
大佬可以试下 kotlin native
saranz
149 天前
其实就和 react 一样,业务代码一丢丢,但是库文件占了线上代码的大部分。
用 Solid 重构之后线上代码变小了很多一个样。
boqiqita
149 天前
试试 shell 命令,估计就几十 kb
potatowish
149 天前
可以再试试用 servlet 实现,少用三方库,springboot 太占内存,
arloor
149 天前
哈哈,我也是一路从 java 走到 go ,后面又走到了 rust ,内存占用真的少。
silvernoo
149 天前
@boqiqita #3 shell 内存全被 curl 占了
silvernoo
149 天前
总结,Java 一坨屎,落后的毒瘤
aeiou520
149 天前
不懂你怎么选的依赖。我这边 springboot 按照你的功能点选依赖 jdbc ,mysql 驱动,starter-web ,打出来的包也就 21mb
aeiou520
149 天前
@aeiou520 哈哈~看错了,以为是打包的
sagaxu
149 天前
quarkus native 应该能优化到 20M 以内
keepRun
149 天前
我为了测试 web 占用大小,还测试过 rust ,可以做到 4m
keepRun
149 天前
这我以前写的应该有点作用:《 graalvm 拯救了 Java 的启动速度,但没法拯救 Java 的内存占用》 https://v2ex.com/t/1005841
mark2025
149 天前
@keepRun go, rust 偏底层,写应用业务没那边顺畅,折衷选 TS+nodejs:既有 js 灵活以及 TS 类型保护,也没有 spring 全家桶那么重(占用资源太多)
inframe
149 天前
写代码实现功能,最快的估计还是 python
darkengine
149 天前
没有坏的语言/框架,只有坏的实现。

这个需求选 Java/SpringBoot 是杀鸡用牛刀。
si
149 天前
打包看了下,JAR 文件 24MB ,运行起来用了 350MB 内存。
kk2syc
149 天前
@inframe 写代码实现功能,最快的是 php ,连代码格式都不需要考虑。打开记事本就能写 /斜眼笑 /狗头
karottc
149 天前
@tanranran 本来想试下的,结果 kotlin native 还不支持 mysql, 只支持 sqlite, 所以优先级往后放了。
karottc
149 天前
@boqiqita 那我不得行,我的出发点还是,要方便后续维护迭代升级,加功能必须要方便。
zzzmh
149 天前
说的没毛病,但我作为一个不会 go 的 java 也要给 java 说几句好话找补一下
现在服务器没那么贵的离谱的情况下,多 1 个 G 的内存,也没那么重要
N 年前的 JAVA ,也没比他以前的老同行省内存过,照样不耽误卷死同行,
个人认为 Java 的优势在培养一个程序员成本低,开发大型项目难度小周期成本低。
反过来想,理论上假如说你全部手搓代码,C 搓一个程序,肯定比 Java 性能强 N 倍,多系统运行不在话下,但培养一个员工的成本血贵,开发大型项目时间周期太长,这些成本远超内存上的这点小钱

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

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

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

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

© 2021 V2EX