关于@SpringBootApplication的性能问题

关于@SpringBootApplication的扫包优化的文章,然后做了一个测试。
项目用的是spring boot 2.1.4,参考优化:https://www.cnblogs.com/cmfwm/p/7943756.html
网上大多数的文章都说默认注解带来方便的同时也带来了一些问题,如:
1、会导致项目启动时间变长。当启动一个大的应用程序,或将做大量的集成测试启动应用程序时,影响会特别明显。
2、会加载一些不需要的多余的实例(beans)。
3、会增加 CPU 消耗。
然后优化的过程是利用@Configuration,@Import注解进行指定自动装配,下面是两种不同的注解方式的监视图:

1.@SpringBootApplication扫包方式

在项目启动完之后的堆监视图:
在这里插入图片描述

可以看出图中的类加载数是10313,已使用堆内存的大小是241M,然后这个堆内存的使用情况会慢慢的随着时间不断的增大,当达到大概300M的时候就会进行一次gc,这个时候堆内存会降到70M左右。
项目启动时间:
在这里插入图片描述
时间大概在10秒左右

2.@Configuration,@Import装配

配置代码如下:

@Configuration
@Import({
        DispatcherServletAutoConfiguration.class,
        EmbeddedWebServerFactoryCustomizerAutoConfiguration.class,
        ErrorMvcAutoConfiguration.class,
        HttpEncodingAutoConfiguration.class,
        //HttpMessageConvertersAutoConfiguration.class,
        MultipartAutoConfiguration.class,
        ServletWebServerFactoryAutoConfiguration.class,
        RedisAutoConfiguration.class,
        AopAutoConfiguration.class,
        PropertyPlaceholderAutoConfiguration.class,
        WebMvcAutoConfiguration.class,
        WebSocketServletAutoConfiguration.class
})
@ComponentScan(basePackages = {"com.cntaiping"})
public class EditorServeApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(EditorServeApplication.class);
    }

    public static void main(String[] args) {
        ApplicationContext app = SpringApplication.run(EditorServeApplication.class, args);
    }

}

性能监视图如下:
在这里插入图片描述
可以看出图中的类加载数是9537,已使用堆内存的大小是231M,然后这个堆内存的使用情况也是和上面的情况一样,会慢慢变大。
项目启动时间:
在这里插入图片描述
启动时间在9秒左右。
所以综上的结果,第二种方式会比第一种方式的类加载数要少大概7~8百个,然后堆内存要少10M左右,启动时间要少大概1到两秒,个人是觉得没什么好优化的,直接用默认注解比较方便省事

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值