需求缘起:在研究Spring Boot加速启动的时候,发现我们在实际中,可能比较注重我们服务器的内存的情况,那么我们会想如果在启动的时候,所占用的内存越低是越好,基于这个想法,我们看看Spring Boot启动之后的一个内存占用情况。 我们看看本节的大纲: (1)Spring Boot之Tomcat内存情况; (2)Spring Boot之Undertow内存情况; 接下来看下具体看下每个部分的内容: (1)SpringBoot之Tomcat内存情况; 我们知道,默认情况下,Spring Boot使用Tomcat来作为内嵌的Servlet容器。我们启动项目之后可以使用VisualVM进行查看应用所占的内存情况: (1)进入到你的jdk的安装目录下bin,找到:jvisualvm.exe,双击打开 (2)双击打开之后,你能在左边操作栏找到【本地】--【应用程序的包名】--【双击打开】:
以上是我使用Spring Boot默认的方式启动应用后,用VisualVM监控到的内存占用情况:堆内存占用50M,17个线程被开启。没有比较就没有伤害,一比较我吓一跳,哈哈,单独的一个tomcat是无法看出来效果的,我们看看Undertow的情况下。
(2)SpringBoot之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个线程被开启。。
我这里只是一个HelloWorld代码,实际项目中应该会更明显。 具体可以参考国外的一篇文章进行学习研究: |
|