有没有办法对 Spring 进行"瘦身"?不去定制代码的前提下。

2021-08-12 10:43:35 +08:00
 abcbuzhiming
Spring 现在也是个庞然大物了,一个非常简单的 Api 跑起来背着一大坨依赖,内存占用几百 M 那都算是少的。我在网上找了找优化方案也没啥结果,Spring 内部基础功能太多导致它自身消耗很大,GraalVM 这东西看着很美,实际远没到可以使用的状态。

我甚至都起过吧 Spring 换掉的想法,但是 Spring 的 IOC 确实好用,而且其它家的这种框架,也没找到一个公认的经过工业环境考验的东西。

感觉 Spring 在 Java 的世界不说对手了,连第二名都找不到
4329 次点击
所在节点    Java
30 条回复
sue0917
2021-08-12 13:37:11 +08:00
思考这些东西不如加钱升级内存
jack778
2021-08-12 13:40:48 +08:00
用 jfinal 吧,作者有强迫症,只需要导入核心包,核心包不依赖任何第三方 jar.
cheng6563
2021-08-12 14:53:16 +08:00
换 openj9 的 jvm,内存给你干一半下来。
nekoneko
2021-08-12 16:44:08 +08:00
还想用 spring 还要瘦身那就 spring native
然后可以考虑 quarkus,国内文档少
securityCoding
2021-08-12 16:45:22 +08:00
@sagaxu +1,换 go 可以多活几年
passerbytiny
2021-08-12 17:36:47 +08:00
你要想瘦身源代码那还可以去开发者社区讨论讨论,你要想瘦身运行时占用,那建议直接换掉 Java——Spring 程序的资源占用没有比非 Spring Java 程序的高。

此外,Java 内存占用只是预分配占用高,实际上并不高。通过合理配置 JVM 参数,几十 M 内存就能支撑起小型服务器。
mmdsun
2021-08-12 18:59:25 +08:00
vert.x,akka,jooby 也行。不过占用也高,只能看 spring native 出来后了。

要是 java 系找不到除 spring 好用的框架就看.net 系列,java 程序员基本上可以无缝对接,比如:

[asp.net core] 这个 web api 和 spring boot 差不多,外国框架热度已经超过 spring 了
https://dotnet.microsoft.com

数据访问层,相当于 spring data jpa:
https://docs.microsoft.com/zh-cn/ef/core/

[Web 性能排名:]
vert,x 前 20,spring 在后面 50 左右,asp.net 前十:

https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=composite
jin7
2021-08-13 08:39:50 +08:00
换 c#
zzzmh
2021-08-13 10:06:28 +08:00
jvm openj9 是一个方法,放在 docker 里运行限制内存优先 swap 是一个方法,这 2 个也可以结合一起用。
如果要治本,换 go 也可以,一定要 java,自己写 servlet,没开玩笑,servlet 真的可以实现 springboot 所有功能,只要你有本事和耐心写。。。不用 tomcat 都行,自己写 http 服务。就是累挺,有这时间,不如买个内存大点的服务器
Joker123456789
2021-08-18 16:19:17 +08:00
不知道你为什么会对 IOC 有如此强的依赖, 如果可以不用 IOC 的话,vert.x 是个好选择。 或者你可以自己写一个 vert.x plus,给 vert.x 加上 IOC 的特性,作为分支发布。

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

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

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

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

© 2021 V2EX