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 堆大小

测试:

第一步,在项目运行,编辑结构中配置参数

 

第二步,运行项目,查看回收次数

这样配置后,GC 回收次数非常多。

更改堆大小后,-XX:+PrintGCDetails -Xmx256M -Xms256M ,GC 回收次数减少

  1. 外部启动

第一步,通过 maven 项目打 jar 包

配置 pom.xml

<build>
   <plugins>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
         <configuration>
            <source>1.8</source>
            <target>1.8</target>
         </configuration>
      </plugin>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
         <configuration>
            <archive>
               <manifest>
                  <addClasspath>true</addClasspath>
                  <useUniqueVersions>false</useUniqueVersions>
                  <classpathPrefix>lib/</classpathPrefix>
                  <mainClass>com.crisp.Mybatis05Application</mainClass>
               </manifest>
            </archive>
         </configuration>
      </plugin>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <version>2.4.2</version>
         <configuration>
            <skipTests>true</skipTests>
         </configuration>
      </plugin>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
   </plugins>
</build>

mainClass 为入口类

第二步,在 Maven Project 目录下,点击 package

生成 jar 默认在 target 文件夹下

第三步,执行外部启动命令

java -server -Xms32m -Xmx32m -jar mybatis05-0.0.1-SNAPSHOT.jar

第四步,通过 jconsole.exe 查看内存

     

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


作者:翼云先森

来源链接:

https://www.jianshu.com/p/bf092200b7e0

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值