需求缘起:在研究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》是一本面向初学者的指南,旨在帮助编程新手全面理解并掌握Spring Boot这一强大的Java开发框架。Spring Boot是Spring生态系统的一部分,它简化了配置,提供了快速构建应用程序的能力,使得...
根据给定文件的信息,我们...通过以上学习路径,开发者可以从零开始逐步掌握Spring Boot及其相关技术栈,最终成为一名合格的Spring Boot开发者。在整个过程中,持续实践和参与开源项目对于提升技能也是非常有帮助的。
对于已经具备一定Spring Boot使用经验但希望进一步深入学习、熟练掌握该框架特性的开发者而言,从零开始搭建一个完整的后端脚手架不仅有助于加深对Spring Boot的理解,还能提供一系列实用的解决方案。本文旨在通过...
通过Layui,开发者可以利用其提供的模块快速实现复杂的界面功能,而不必从零开始编写大量的JavaScript代码。 本项目源码包含297个文件,其中包括86个GIF动画、52个PNG图像、43个JavaScript文件、36个Java源文件、34...
自动配置可以大幅减少开发者的配置工作量,内嵌服务器如Tomcat、Jetty或Undertow使得开发者不需要额外部署Servlet容器,而微服务支持则是指Spring Boot天然支持微服务架构设计,能够轻松构建分布式应用。 其次,...
同时,它还要求有适当的Servlet容器,因为Spring Boot内嵌了如Tomcat、Jetty、Undertow等Web服务器。 ### Spring Boot安装 Spring Boot安装包括了为Java开发者准备的安装指南,详细介绍了如何使用不同的包管理工具...
通过学习本项目,开发者可以掌握如何从零开始构建一个可部署的应用,并且了解如何将应用容器化,以便在不同环境中部署和运行。 此外,该项目还适合用于计算机相关的毕业设计课题和课程作业,尤其是对于人工智能、...
Spring Boot还使用了嵌入式Tomcat、Jetty或Undertow等Servlet容器,这样应用就可以直接打包为一个可执行的JAR或WAR文件,方便部署。 旧物置换网站是一种以物换物的网络平台,它允许用户在平台上发布他们想要交换的...
它的设计思想使它能够轻松地与已有的项目进行整合,或者从零开始构建新的单页面应用程序(SPA)。Vue的响应式系统和组件化特性使得前端开发更为高效和便捷。 项目中使用的JDK版本为JDK1.8。这一版本引入了lambda...
其次,Spring Boot内嵌了Tomcat、Jetty或Undertow等Servlet容器,这使得它成为一个独立的应用服务器,可以直接打包成一个可执行的jar文件,运行时无须依赖外部的Servlet容器。 接下来,我们深入探讨微服务脚手架...
Spring Boot的核心特性之一是能够创建独立的Spring应用程序,其内部集成了Tomcat、Jetty或Undertow等Servlet容器,无需部署WAR文件。 Vue.js是另一项引领前端开发的技术,它是一个用于创建用户界面的渐进式框架。...
学生可以通过阅读这些资料,更好地理解系统的工作原理,掌握如何从零开始设计和实现一个完整的Web应用。 本系统不仅为计算机专业的学生提供了一个实践的平台,还为他们提供了全面的学习资源。通过对该系统的开发和...