需求缘起:在研究Spring Boot加速启动的时候,发现我们在实际中,可能比较注重我们服务器的内存的情况,那么我们会想如果在启动的时候,所占用的内存越低是越好,基于这个想法,我们看看Spring Boot启动之后的一个内存占用情况。
我们看看本节的大纲:
(2)Spring Boot之Undertow内存情况;
接下来看下具体看下每个部分的内容:
(1)Spring Boot之Tomcat内存情况;
我们知道,默认情况下,Spring Boot使用Tomcat来作为内嵌的Servlet容器。我们启动项目之后可以使用VisualVM进行查看应用所占的内存情况:
(1)进入到你的jdk的安装目录下bin,找到:jvisualvm.exe,双击打开
(2)双击打开之后,你能在左边操作栏找到【本地】--【应用程序的包名】--【双击打开】:
以上是我使用Spring Boot默认的方式启动应用后,用VisualVM监控到的内存占用情况:堆内存占用50M,17个线程被开启。没有比较就没有伤害,一比我吓一跳,哈哈,单独的一个tomcat是无法看出来效果的,我们看看Undertow的情况下。
(2)Spring Boot之Undertow内存情况;
我们将Web服务器切换到Undertow来提高应用性能。Undertow是一个Java开发的灵活的高性能Web服务器,提供包括阻塞和基于NIO的非阻塞机制。Undertow是红帽公司的开源产品,是Wildfly默认的Web服务器。首先,从依赖信息里移除Tomcat配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 从依赖信息里移除 Tomcat配置 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
然后添加Undertow:
<!-- 添加 Undertow依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
启动项目,用VisualVM监控到的信息显示:堆内存占用50M,16个线程被开启。。
我这里只是一个Hello World代码,实际项目中应该会更明显。
具体可以参考国外的一篇文章进行学习研究:
https://alexecollins.com/spring-boot-performance/
à悟空学院:https://t.cn/Rg3fKJD
学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!
SpringBoot视频:http://t.cn/A6ZagYTi
Spring Cloud视频:http://t.cn/A6ZagxSR
SpringBoot Shiro视频:http://t.cn/A6Zag7IV
SpringBoot交流平台:https://t.cn/R3QDhU0
SpringData和JPA视频:http://t.cn/A6Zad1OH
SpringSecurity5.0视频:http://t.cn/A6ZadMBe
Sharding-JDBC分库分表实战:http://t.cn/A6ZarrqS
分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr
相关推荐
3. 内嵌式Servlet容器:Spring Boot支持内嵌Tomcat、Jetty或Undertow,无需额外部署WAR文件。 4. 健康检查:提供健康检查API,用于监控系统状态。 5. 配置文件:通过application.properties或application.yml进行...
《从零开始学Spring Boot》是一本面向初学者的指南,旨在帮助编程新手全面理解并掌握Spring Boot这一强大的Java开发框架。Spring Boot是Spring生态系统的一部分,它简化了配置,提供了快速构建应用程序的能力,使得...
- **独立运行的Spring应用**:Spring Boot可以创建独立的Spring应用程序,开发者无需部署WAR包到外部的Servlet容器中。 - **内嵌的服务器**:如Tomcat、Jetty或Undertow等,使得项目可以打包成一个JAR文件直接运行...
例如,要注册一个Servlet组件,首先需要编写一个继承自HttpServlet的Servlet实现类,然后创建一个ServletRegistrationBean的Bean,将Servlet实例包装后添加到Spring Boot的Bean容器中,并且可以设置Servlet的加载...
Spring Boot实现Undertow服务器同时支持HTTP2、HTTPS的方法 在本文中,我们将讨论如何让Spring Boot应用程序同时支持HTTP和HTTPS两种协议。首先,我们需要了解什么是HTTP2和HTTPS,以及它们的优点和缺点,然后我们...
Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...
2. **内嵌服务器(Embedded Servers)**:Spring Boot支持内嵌Tomcat、Jetty或Undertow服务器,这样可以直接运行打包后的jar文件,而无需额外部署到外部容器,大大提高了开发效率。 3. **自动配置(Auto ...
Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring 应用程序的初始搭建以及开发过程。它集成了大量常用的第三方库配置,如 JDBC、MongoDB、RabbitMQ、Quartz 等,使得开发者可以“零配置”地启动项目,...
Spring Boot旨在快速开发独立的、生产级别的Spring基础的应用程序,其核心特性包括自动配置、嵌入式Web服务器(如Tomcat、Jetty或Undertow)以及无需代码生成和XML配置。 在Spring Boot的开发流程中,通常会涉及...
- **嵌入式服务器**:Spring Boot 支持嵌入 Tomcat、Jetty 或者 Undertow,使得开发者不再需要部署外部容器。 - **简化安全配置**:Spring Security 可以轻松地集成到 Spring Boot 应用中,简化了安全配置。 - **...
Spring Initializr是一个在线生成Spring Boot项目结构的工具,通过选择技术栈、版本等,可以快速生成一个基础的Spring Boot项目结构,便于开发者快速开始编码。 8. **Web开发** Spring Boot对Web开发提供了很好的...
Spring Boot还支持内嵌的Servlet容器,比如Tomcat、Jetty或Undertow,这意味着开发者可以不用部署到传统的WAR文件中,而是直接运行一个JAR文件,并且应用程序会启动内嵌的Servlet容器。这简化了部署过程,使得开发...
Spring Boot内嵌了Tomcat,Jetty或Undertow等Servlet容器,简化了Web项目的配置和部署。 2. Spring Boot项目创建:在IntelliJ IDEA中创建Spring Boot项目时,可以通过Spring Initializr来选择所需的依赖并构建项目...
Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring 应用程序的初始搭建以及开发过程。它提供了预配置的依赖项和自动配置功能,使得开发者可以快速地构建可运行的独立应用程序。在描述中提到的...
5. 内嵌服务器支持:Spring Boot支持运行Spring应用的嵌入式Servlet容器,如Tomcat, Jetty或Undertow。使用内嵌服务器可以避免在外部部署应用。 6. 监控和管理:Spring Boot提供了多种管理和监控应用的方法,比如...
Spring Boot本身并不替代Spring,而是对Spring Framework的封装和优化,使得开发者可以快速构建可独立运行的Spring应用程序。 **1. 快速启动** Spring Boot的亮点之一就是“起步依赖”(Starter Dependency)。...
开发者在主类文件中添加@EnableAutoConfiguration注解或@SpringBootApplication注解后,Spring Boot将开始扫描类路径上所有可用的jar包,并根据所发现的库和类自动配置Spring应用。例如,如果类路径上有数据库连接池...
3. **内嵌式服务器**:Spring Boot 内嵌了 Tomcat、Jetty 或 Undertow 服务器,这意味着你可以直接在应用中运行 Spring Boot 应用程序,而无需单独安装 Web 服务器。 4. **自动配置**:Spring Boot 可以根据添加到...
从创建一个新的Spring Boot项目开始,通常包括以下步骤: 1. **创建POM或build.gradle文件**:定义项目的构建配置和依赖关系。 2. **添加classpath依赖**:根据需要添加的Spring Boot Starter依赖。 3. **编写代码*...