惊呆了,Spring Boot居然这么耗内存!
点击上方“方志朋”,选择“设为星标”
做积极的人,而不是积极废人
Spring Boot总体来说,搭建还是比较容易的,特别是Spring Cloud全家桶,简称亲民微服务,但在发展趋势中,容器化技术已经成熟,面对巨耗内存的Spring Boot,小公司表示用不起。如今,很多刚诞生的JAVA微服务框架大多主打“轻量级”,主要还是因为Spring Boot太重。
JAVA系微服务框架
No1-Spring Cloud
介绍
有Spring大靠山在,更新、稳定性、成熟度的问题根本不需要考虑。在JAVA系混的技术人员大约都听说过Spring的大名吧,所以不缺程序员……,而且这入手的难度十分低,完全可以省去一个架构师。
但是,你必然在服务器上付出:
至少一台“服务发现 ”的服务器;
可能有一个统一的网关Gateway;
可能需要一个用于“分布式配置管理”的配置中心;
可能进行“服务追踪”,知道我的请求从哪里来,到哪里去;
可能需要“集群监控”;
项目上线后发现,我们需要好多服务器,每次在集群中增加服务器时,都感觉心疼;
压测30秒
压测前的内存占用
如图,内存占用304M。
压测时的内存占用
如图,内存占用1520M(1.5G),CPU上升到321%
概览
总结
一个Spring Boot的简单应用,最少1G内存,一个业务点比较少的微服务编译后的JAR会大约50M;而Spring Cloud引入的组件会相对多一些,消耗的资源也会相对更多一些。
启动时间大约10秒左右: Started Application in 10.153 seconds (JVM running for 10.915)
JAVA系响应式编程的工具包Vert.x
介绍
背靠Eclipse的Eclipse Vert.x是一个用于在JVM上构建响应式应用程序的工具包。定位上与Spring Boot不冲突,甚至可以将Vert.x结合Spring Boot使用。众多Vert.x模块提供了大量微服务的组件,在很多人眼里是一种微服务架构的选择。
华为微服务框架Apache ServiceComb就是以Vert.x为底层框架实现的,在"基准测试网站TechEmpower"中,Vert.x的表现也十分亮眼。
压测30秒
压测前的内存占用
如图,内存占用65M。
压测时的内存占用
如图,内存占139M,CPU占2.1%,给人的感觉似乎并没有进行压测。
概览
总结
Vert.x单个服务打包完成后大约7M左右的JAR,不依赖Tomcat、Jetty之类的容器,直接在JVM上跑。
Vert.x消耗的资源很低,感觉一个1核2G的服务器已经能够部署许多个Vert.x服务。除去编码方面的问题,真心符合小项目和小模块。git市场上已经出现了基于Vert.x实现的开源网关- VX-API-Gateway帮助文档
https://duhua.gitee.io/vx-api-gateway-doc/
对多语言支持,很适合小型项目快速上线。
启动时间不到1秒:Started Vert.x in 0.274 seconds (JVM running for 0.274)
JAVA系其他微服务框架
SparkJava
jar比较小,大约10M
占内存小,大约30~60MB;
性能还可以,与Spring Boot相仿;
Micronaut
Grails团队新宠;
可以用 Java、Groovy 和 Kotlin 编写的基于微服务的应用程序;
相比Spring Boot已经比较全面;
性能较优,编码方式与Spring Boot比较类似;
启动时间和内存消耗方面比其他框架更高效;
多语言;
依赖注入;
内置多种云本地功能;
很新,刚发布1.0.0
Javalin
上手极为容易;
灵活,可以兼容同步和异步两种编程思路;
JAR小,4~5M;
多语言;
有KOA的影子;
只有大约2000行源代码,源代码足够简单,可以理解和修复;
符合当今趋势;
多语言;
嵌入式服务器Jetty;
Quarkus
启动快;
JAR小,大约10M;
文档很少;
来源:http://t.cn/Ai8xQ3lT
热门内容:
System.currentTimeMillis()竟然存在性能问题,这我能信?
团队开发中 Git 最佳实践,不给队友拖后腿!
面试官:为什么MySQL的索引要使用B+树,而不是其它树?比如B树?
面试问你Spring如何解决循环依赖的时候,不要一脸懵逼了!
面试官问我:一个 TCP 连接可以发多少个 HTTP 请求?我竟然回答不上来...
为什么说「中台」程序员未来会最值钱?
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡
惊呆了,Spring Boot居然这么耗内存!相关推荐
- 惊呆了! | Spring Boot 使用 @Value 读取配置还能这样用
" Hi ! 我是小小,今天是本周的第三篇,Spring Boot 中使用@Value读取配置文件 配置文件配置 直接配置 在src/main/resources下添加配置文件,applic ...
- 在 Spring Boot 中,如何干掉 if else!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://t.cn/E9beQIN 需求 这里虚拟一个业 ...
- 让 Spring Boot 启动更快一点
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 "Spring有多快?" 这是 2018 Sp ...
- 掌握 Spring Boot 运行内存及内存参数设置:助力高效应用部署与优化
pring Boot 是当今非常流行的 Java 应用框架之一,在企业级应用开发中被广泛使用.应用部署和优化是企业级应用开发的一个非常重要的方面.在这篇博客中,我们将学习如何掌握 Spring Boo ...
- 国内最全的Spring Boot系列之五
历史文章(累计400多篇文章) <国内最全的Spring Boot系列之一> <国内最全的Spring Boot系列之二> <国内最全的Spring Boot系列之三& ...
- 详解 | Spring Boot 最核心的 3 个注解详解
Hi !我是小小,开始本周的第一篇,本周第一篇内容是关于Spring Boot 最核心的三个注解,将会对这三个注解进行详细解释. 前言 Spring Boot 最大的特点是无需 XML 配置文件,能够 ...
- spring boot demo(spring jdbc访问数据)
Accessing Relational Data using JDBC with Spring 您将使用Spring JdbcTemplate 构建应用,访问数据库中数据. 下面的简单数据访问逻辑, ...
- 【2021最新版】Spring Boot面试题总结(92道题含答案解析)
文章目录 1.什么是Spring Boot? 2.为什么要用SpringBoot? 3.Spring Boot有哪些优点? 4.Spring Boot的核心注解是哪个?它主要由哪几个注解组成的? 5. ...
- 【Spring Boot官方文档原文理解翻译-持续更新中】
[Spring Boot官方文档原文理解翻译-持续更新中] 文章目录 [Spring Boot官方文档原文理解翻译-持续更新中] Chapter 4. Getting Started 4.1. Int ...
最新文章
- linux c 各头文件作用总结
- zookepper 安装
- Spring IOC 注入方式
- bike with a famous logo
- 解决 Ubuntu 无法更新软件问题
- 为什么薄膜干涉的厚度要很小_薄膜干涉的薄膜为什么不能太厚?1.这里的厚是用什么来衡量的?2.假如一个厚为1mm的薄膜,是否薄?...
- python 复制文件夹校验_Python多任务复制文件夹
- JavaBean的get、set方法生成器
- Vista系统自带IIS 7.0设置技巧详解
- CallBack函数 回调函数
- qml 不刷新 放大还原_【显示器选择详解】你的电脑能否带动高分辨率,高刷新率显示器?...
- ViewPager左右滑动
- 【答题卡识别】基于matlab GUI hough变换答题卡成绩统计(带面板)【含Matlab源码 1828期】
- contos7改分辨率_centos桌面分辨率修改
- 【语音识别】基于支持向量机SVM实现脑电信号分期睡眠监测matlab 源码
- LeetCode刷题之1818. 绝对差值和
- IPtables 扩展模块 Multiport/IPRange
- 微信广告数据源创建查询与上报-PHP
- python atan_Python atan或atan2,我应该使用什么?
- ZYNQ入门,EBAZ4205开发平台从头开始搭建