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

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

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

感觉 Spring 在 Java 的世界不说对手了,连第二名都找不到
4560 次点击
所在节点    Java
30 条回复
rykinia
2021-08-12 10:56:20 +08:00
你如果只是要注入的话,可以用 guice https://github.com/google/guice

或者更激进点,注入都不要了,用 vert.x
cubecube
2021-08-12 10:58:30 +08:00
几百兆夸张了,spring boot 空项启动目大概 50M 内存。
dqzcwxb
2021-08-12 11:01:06 +08:00
又要功能多又要瘦
那我诚招妹子,要求简单,腰细胸大即可
fkdog
2021-08-12 11:02:21 +08:00
micronaut
hcen1997
2021-08-12 11:03:23 +08:00
换个思路, 是不是以前的代码没有 ioc 功能
ioc 功能是不是在现在的软件开发当中是非常重要的,
那么实现这个功能就要一定的代码量,
abcbuzhiming
2021-08-12 11:26:33 +08:00
@cubecube 空项目有啥用呢,你加个最基础的 web 依赖试试
ikas
2021-08-12 11:27:27 +08:00
功能多怎么就消耗内存了?只用 ioc,那么只引入 context 就好了,也就几个核心依赖
pengtdyd
2021-08-12 11:30:41 +08:00
杞人忧天 代码优化 1w 遍,远没有花钱买个好一点的服务器强
ufan0
2021-08-12 11:39:06 +08:00
1. 一个非常简单的 Api 跑起来背着一大坨依赖,内存占用几百 M 那都算是少的
你所谓的几百 M 是直接在 Linux 上看的吧,怀疑你的查看方式,其并非真实内存占用。

2. 想瘦身,多排除依赖,但是效果并不明显,因为这个内存占用并没有几年前的帖子说的那么高。

3. 不喜欢 Spring 家族考虑一下 Vert.x,我们网关 All in Vert.x 了,但是仅觉得写异步顺手。
zoharSoul
2021-08-12 11:57:30 +08:00
@cubecube #2 你加上 web 试试, 轻松好几百
Cbdy
2021-08-12 12:06:44 +08:00
Spring 官方的例子,一个 CURD 的 demo,启动内存可以控制在 20M
Cbdy
2021-08-12 12:10:33 +08:00
chendy
2021-08-12 12:24:32 +08:00
瘦身的方向和目标是什么?如果是减少内存使用的话,其实直接加参数就能限制住,顶多内存不够用频繁 gc 导致性能下降
sagaxu
2021-08-12 12:35:16 +08:00
别折腾了,换 Go 吧
renyijiu
2021-08-12 12:39:42 +08:00
micronaut quarkus 为什么没有呢?
Ayanokouji
2021-08-12 13:04:28 +08:00
Spring Native
zoharSoul
2021-08-12 13:09:06 +08:00
@Cbdy #11 我点开看了下, 是堆内存在 20mb, 进程内存 100 多 mb 呢 好不好
zoharSoul
2021-08-12 13:09:15 +08:00
@zoharSoul #17 根据 RSS (常驻集大小)值在 150-190MB 范围内
Lemeng
2021-08-12 13:11:12 +08:00
最不喜欢折腾如我。
liuhan907
2021-08-12 13:32:22 +08:00
想要启动内存低换个 .NET5 用 ASP.NET 写呗,基本啥都有。

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

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

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

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

© 2021 V2EX