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

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

17549 次点击
所在节点    Java
152 条回复
skull
59 天前
为老板省钱的其一方法就是优化掉自己
Ayanokouji
59 天前
@bhoppi spring 采用单例模式,如果启用了(绝大数模块是引入即启用),就会自动创建模块所需的 bean
Daniel17
59 天前
最近为啥这么多吐槽 Java 内存占用的,Java 内存占用多又不是现在才出现的
suyuyu
59 天前
要不怎么会说 PHP 是世界上最好的语言 (
sagaxu
59 天前
@bhoppi Spring 不重,Spring Boot 很重,启动时扫描每个包每个类,大量使用反射和字节码动态生成织入。在运行时,哪怕只处理一个最简单的 http 请求,它也引入了完整的 tomcat ,执行到你的方法的时候,调用链路深度已经好几十层了。如果访问 DB ,标准姿势是用 JPA ,那就引入 hibernate 那套大家伙了,从 HQL 编译到 SQL ,一级缓存默认开启,不都得消耗内存?更别说有的项目还开二级缓存和查询缓存。Spring 家族是 J2EE 的一个草根实现,各种组件都选取了很重很企业级的实现,默认开启的东西很多,用不到的功能,它也可能占用着内存。大量的类也会占用很多内存,哪怕只调用了一个方法,类加载器不也得把它载入内存么?
wysnxzm
59 天前
@Daniel17 #43 -Xmx 不知道是什么的大有人在,不要太高估平均水平啦
xingjue
59 天前
go 编译速度快 资源占用少 无虚拟机 这的确是当前云原生的优势,java 这几点没法比
hitoto
59 天前
@chendy +1
tsvico
59 天前
杀鸡用牛刀,你就别怪刀重。要不试试 php 或者 C
yKXSkKoR8I1RcxaS
59 天前
这功能,用 PHP 不好咩?
brookegas
59 天前
看到好多 Javaer 老气横秋教训 op 的,有点三季人的即视感。

“PHP 是世界上最好的语言”,现在可以直接改为“Java 是世界上最好的语言”了。
Java 过于简单,以至于吸引和堆积了大量的跨行业转码人士,他们是重要的屎山贡献者,也是最努力为 Java 辩护和战斗的群体;他们缺乏学习其他语言的能力和动力;由于低门槛易替代,他们也是 35 岁就能轻易被无情替换的螺丝钉。
看到有人发帖说 Java 不好,第一个跳出来反击并对 op 冷嘲热讽的就是他们。

“百万漕工衣食所系” “挡人财路犹如杀人父母”

只能说,理解并祝福吧。。。
listen2wind
59 天前
@Daniel17 这种让我想起来一个段子,一个人说我哥能吃一碗饭,另一个人说我哥能吃一盆饭,再另一个人说我哥能吃答辩
murmur
59 天前
@xingjue 企业开发不需要云原生啊,单体应用配个好数据库服务器能扛起绝大多数中小企业应用
neptuno
59 天前
企业倒是不在乎内存,你这个属于个人需求,确实适合用 go 。我部署在 nas 的程序,都是 java ,不用在乎内存,熟悉的语言好维护,出了问题改的快。
HaibaraDP
59 天前
技术选型绝了,hello world 写出花来
PaulSamuelson
59 天前
如果遇到一个 Eletron+Java 的桌面端项目,那估计能从 500MB 优化到 5MB 。
wxw752
59 天前
@brookegas #51 我日常项目 java 和 go 双修,偶尔写写 C#,前端也会,应该不算是单独哪一派,反驳一下你。

你真的看懂上面老哥们说的是什么意思了吗,不是在说 Java 天下第一,而是都在指责 OP 一个很简单的需求用重量级框架,反过头来抱怨内存占用高。毕竟没有最好的工具,只有最适合的工具。

如果你之前是看懂了还要引战,理解不了也祝福不了,如果理解能力捉鸡,那我祝福你
xFrye
59 天前
@chendy 我就说为啥最近老是有这种月经帖子出现,看了你这个才知道都是同一个人发的😂
Richared
59 天前
怎么每天都有这样的帖子,上次就说了一句,有这个时间给 App 做好点,用户的内存和硬盘就不值钱了?一个 App 安装包动不动 500M 。安卓内存都普遍 16G 了。谁造成的?真有这工匠精神,国内安卓 App 也不能到这个程度。
murmur
59 天前
@Richared 用户硬盘还真不值钱,256 起配,你说林檎用 c++省资源,聊天记录和图片视频不因为你是林檎系统就省资源啊

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

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

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

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

© 2021 V2EX