Springboot 项目JVM优化

一,Spring Boot 扫包优化

@SpringBootApplication注解自动获取应用的配置信息,会给应用带来一些副作用。由自动配置( auto-configuration )和 组件扫描 ( component scanning )组成,这跟使用 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 三个注解的作用是一样的。这样做给开发带来方便的同时,也会有三方面的影响:
1、会导致项目启动时间变长。当启动一个大的应用程序,或将做大量的集成测试启动应用程序时,影响会特别明显。
2、会加载一些不需要的多余的实例(beans)。
3、会增加 CPU 消耗。
针对以上三个情况,我们可以移除 @SpringBootApplication 然后使用 @Configuration、@EnableAutoConfiguration 和

  @ComponentScan注解来扫描特定的包
    //@SpringBootApplication
    @Configuration
    @EnableAutoConfiguration
    @ComponentScan(basePackages = {"com.crisp.controller","com.crisp.service"})
    @MapperScan("com.crisp.mapper")
    public class Mybatis05Application {
    
       public static void main(String[] args) {
          SpringApplication.run(Mybatis05Application.class, args);
       }
    }

二,JVM参数调优

调优策略:初始化堆内存与最大堆相同,减少垃圾回收次数
两种方法:内部启动和外部启动
1.内部启动
实例参数-XX:+PrintGCDetails -Xmx32M -Xms1M
打印GC日志,设置最大堆内存32M,初始堆内存1M
-Xms :设置Java堆栈的初始化大小
-Xmx :设置最大的java堆大小
测试:
第一步,在项目运行,编辑结构中配置参数
Springboot 项目JVM优化_第1张图片

第二步,运行项目,查看回收次数
Springboot 项目JVM优化_第2张图片
这样配置后,GC回收次数非常多。
更改堆大小后,-XX:+PrintGCDetails -Xmx256M -Xms256M ,GC回收次数减少
Springboot 项目JVM优化_第3张图片
外部启动

第一步,通过maven 项目打jar包
配置pom.xml


   
      
         org.apache.maven.plugins
         maven-compiler-plugin
         
            1.8
            1.8
         
      
      
         org.apache.maven.plugins
         maven-jar-plugin
         
            
               
                  true
                  false
                  lib/
                  com.crisp.Mybatis05Application
               
            
         
      
      
         org.apache.maven.plugins
         maven-surefire-plugin
         2.4.2
         
            true
         
      
      
         org.springframework.boot
         spring-boot-maven-plugin
      
   

mainClass 为入口类
第二步,在Maven Project目录下,点击package
Springboot 项目JVM优化_第4张图片
生成jar默认在target 文件夹下
Springboot 项目JVM优化_第5张图片
第三步,执行外部启动命令
java -server -Xms32m -Xmx32m -jar mybatis05-0.0.1-SNAPSHOT.jar
Springboot 项目JVM优化_第6张图片
第四步,通过jconsole.exe 查看内存
Springboot 项目JVM优化_第7张图片
Springboot 项目JVM优化_第8张图片
Springboot 项目JVM优化_第9张图片
Springboot 项目JVM优化_第10张图片

可以看到内存走向,有一个拐点,说明GC在做回收。

你可能感兴趣的:(后台)