前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Springboot 项目JVM优化「建议收藏」

Springboot 项目JVM优化「建议收藏」

作者头像
全栈程序员站长
发布2022-08-15 20:56:12
8040
发布2022-08-15 20:56:12
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

一,Spring Boot 扫包优化

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

代码语言:javascript
复制
  @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回收次数减少

在这里插入图片描述
在这里插入图片描述

外部启动

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

代码语言:javascript
复制
<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://javaforall.cn/134406.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档