需求缘起:在研究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
相关推荐
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. ...
考虑如何让Spring Boot应用程序同时支持HTTP和HTTPS两种协议。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
从Spring Boot早期版本升级 iv. 11. 开发你的第一个Spring Boot应用 v. 11.1. 创建POM vi. 11.2. 添加classpath依赖 vii. 11.3. 编写代码 i. 11.3.1. @RestController和@RequestMapping注解 ii. 11.3.2. @...
创建独立的Spring 应用程序;...形式运行Spring Boot 的项目,而无须其他服务器配置:对于配置, Spring Boot 提供Spring 框架的最 大自动化配置,大量使用自动配置,使得开发者对Spring 的配置尽量减少:此
其次,Spring Boot支持内嵌的Servlet容器(如Tomcat、Jetty、Undertow等),这意味着你可以将应用程序打包为一个可执行的JAR文件,并直接运行,无需单独安装和配置外部容器。这大大简化了应用的部署过程,提高了开发...
赠送jar包:undertow-servlet-2.2.14.Final.jar; 赠送原API文档:undertow-servlet-2.2.14.Final-javadoc.jar; 赠送源代码:undertow-servlet-2.2.14.Final-sources.jar; 赠送Maven依赖信息文件:undertow-...
赠送jar包:undertow-servlet-2.2.14.Final.jar; 赠送原API文档:undertow-servlet-2.2.14.Final-javadoc.jar; 赠送源代码:undertow-servlet-2.2.14.Final-sources.jar; 赠送Maven依赖信息文件:undertow-...
赠送jar包:undertow-servlet-2.1.7.Final.jar; 赠送原API文档:undertow-servlet-2.1.7.Final-javadoc.jar; 赠送源代码:undertow-servlet-2.1.7.Final-sources.jar; 赠送Maven依赖信息文件:undertow-servlet-...
springboot框架 一、Spring Boot基础应用 Spring Boot特征 ...4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了
springboot框架 一、Spring Boot基础应用 Spring Boot特征 ...4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了
springboot框架 一、Spring Boot基础应用 Spring Boot特征 ...4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了
springboot框架 一、Spring Boot基础应用 Spring Boot特征 ...4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了
springboot框架 一、Spring Boot基础应用 Spring Boot特征 ...4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了
赠送jar包:undertow-servlet-2.1.7.Final.jar; 赠送原API文档:undertow-servlet-2.1.7.Final-javadoc.jar; 赠送源代码:undertow-servlet-2.1.7.Final-sources.jar; 赠送Maven依赖信息文件:undertow-servlet-...
Undertow是一个非常轻量并高性能的web server,它来自 JBoss。支持blocking和non-blocking两种NIO API。接下来通过本文给大家介绍使用Spring Boot 内嵌容器 Undertow创建服务器的方法,感兴趣的朋友一起看看吧
内嵌的容器:Spring Boot 可以打包成一个独立的 JAR 文件,并且内置了 Tomcat、Jetty 或 Undertow 等容器,使得应用程序可以直接运行,而无需外部容器的支持。 自动化的依赖管理:Spring Boot 通过 Starter POMs ...
logback-access-spring-boot-starter 用于 Starter。 注意:此页面用于Spring 。... Java 8 Spring Boot 2.0.0 嵌入式Tomcat 8.5.28 嵌入式码头9.4.8 嵌入式Undertow 1.4.22 登录后访问1.2.3用法添加依赖“ logba
springboot框架 一、Spring Boot基础应用 Spring Boot特征 ...4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了
Sprint Boot子快速项目示例了spring-boot中的各种实用程序。 该项目旨在作为将来的微服务项目的模板,删除不需要的内容。 需求:JDK 8,Maven(3)。 使用的技术: 弹簧靴拖曳MySQL的带有异步驱动程序的mongoDb 带有...
springboot框架 一、Spring Boot基础应用 Spring Boot特征 ...4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了