干货分享 JVM 之第 6 篇 —— SpringBoot2.0 框架性能调优

本文介绍了SpringBoot项目启动慢的原因及优化方案,包括限制@ComponentScan的扫描范围,调整JVM参数以避免频繁GC,以及替换默认的Tomcat服务器为Undertow以提升性能。通过这些调优策略,可以显著提高SpringBoot应用的启动速度和运行效率。
摘要由CSDN通过智能技术生成

 

查看之前的博客可以点击顶部的【分类专栏】

 

1、扫包调优

我们知道,SpringBoot 项目的启动类,只需要一个注解 @SpringBootApplication  就可以把所有的 Bean 对象添加到 Spring 容器中管理。

我们点击进入 @SpringBootApplication 注解,可以看到它其实是使用 

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

把我们项目中所有添加了注解的 Bean 都加载到 Spring 容器中,

这样一来,会递归的把我们一些没必要加入 Spring 容器管理的包、Bean 都加载到 Spring 容器了。这样会影响到我们启动项目的时间。

 

扫包调优策略:

使用定位扫包的方式,只把需要添加到 Spring 容器管理的包进行扫描即可。比如:

@ComponentScan(basePackages = {"com.study.controller","com.study.dao"})

 

2、SpringBoot 内部运行 JVM 参数调优

不懂 IDEA 下如何调整 JVM 参数?查看博客:https://blog.csdn.net/BiandanLoveyou/article/details/118024949

示例:我们启动一个简单的 SpringBoot 项目,把 JVM 参数调整如下:

-XX:+PrintGCDetails -Xms1M -Xmx35M

解释:打印 GC 详细日志,初始化堆的大小为1M,最大堆大小为35M

然后启动项目,可以看到控制台日志输出:GC 在不断的进行垃圾回收。

 

当 GC 不断的进行垃圾回收时,说明我们的内存已经不够了,极易导致 OutOfMemoryError(内存溢出错误)的异常.

 

3、更换 SpringBoot 默认的服务器

我们知道,SpringBoot 默认使用 Tomcat 服务器,我们可以更换一个 UnderTow 服务器,它的性能更好,只是目前推广还不够,很少人知道。

    <dependencies>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 排除 tomcat 服务器 -->
            <exclusions>
                <exclusion>
                    <groupId>org.srpingframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 引入 undertow 服务器 -->
        <dependency>
            <groupId>org.srpingframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>
    </dependencies>

 

调优策略:

1、初始堆值和最大堆内存内存设置相同,二者的值越大,吞吐量就越高。

2、减少垃圾回收次数。

3、最好使用并行收集器,因为并行收集器速度比串行吞吐量高,速度快。

4、设置堆内存新生代的比例和老年代的比例最好为1:2或者1:3。

5、减少GC对老年代的回收。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值