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

Springboot 项目JVM优化「建议收藏」一,SpringBoot扫包优化@SpringBootApplication注解自动获取应用的配置信息,会给应用带来一些副作用。由自动配置(auto-configuration)和组件扫描(componentscanning)组成,这跟使用@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解的作用是一样的。…

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

一,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回收次数减少
在这里插入图片描述
外部启动

第一步,通过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://javaforall.net/134406.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ps批量磨皮滤镜插件ArcSoft Portrait3+ 中文版瘦脸自动识别人脸win/mac支持2018「建议收藏」

    ps批量磨皮滤镜插件ArcSoft Portrait3+ 中文版瘦脸自动识别人脸win/mac支持2018「建议收藏」【系统支持】win系统(win10系统PS不能使用插件版,但是可以使用独立版)mac苹果系统只能使用插件版,不能使用独立版【支持PS】支持CS6-CC2108也可以独立使用苹果系统不能独立使用ArcSoftPortrait+是一款智能化的人像磨皮软件,采用世界上最尖端的人脸检测技术,能够自动检测人像脸部进行磨皮。ArcSoftPortrait+还支持批量处理功能,能同时处理上千张…

    2022年7月22日
    14
  • 802.1ag CFM/802.3ah EFM OAM/Y.1731 ETH OAM学习笔记

    802.1ag CFM/802.3ah EFM OAM/Y.1731 ETH OAM学习笔记相关协议:1)IEEE802.1ag连通性故障管理(CFM:ConnectivityFaultManagement)2)IEEE802.3ah第一英里的以太网(EFM:EthernetintheFirstMile),其中第57章的以太网OAM3)ITU-TY.1731以太网OAM(Operation,AdministrationandMaintenance

    2025年5月29日
    4
  • pycharm2022.3.2激活【2022免费激活】2022.01.21

    (pycharm2022.3.2激活)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1TCF2R91JZ-eyJsaWNlbnNlSW…

    2022年3月31日
    170
  • NOIP2011计算系数详解[通俗易懂]

    NOIP2011计算系数详解[通俗易懂]原题见洛谷(https://www.luogu.org/problem/show?pid=1313)想看稍微简单点的就是NOIP2016的组合数问题,小飞机~(http://blog.csdn.net/a1351937368/article/details/76907902)先说一下这道题需要用到:组合数(杨辉三角),乘方做这道题的感受:题目中说(by+ax)^k,而输入顺序是先a后b搞

    2022年9月25日
    3
  • mysql字符串拼接有空值_MySQL字符串拼接「建议收藏」

    mysql字符串拼接有空值_MySQL字符串拼接「建议收藏」concat()函数拼接时不会忽略空格,但如果有值是null,则结果为nullselectconcat(‘My’,’S’,’Q’,’L’);->MySQLSELECTCONCAT(‘c’);->cSELECTCONCAT(id,name)fromuser2;->1张三2李四concat_ws()函数拼接时不会忽略空格,但会忽略nullselectconcat_…

    2022年9月30日
    4
  • 外包公司的程序员一般做啥工作?_程序员在外包公司有发展吗

    外包公司的程序员一般做啥工作?_程序员在外包公司有发展吗公众号后台回复“图书“,了解更多号主新书内容作者:年素清来源:码农故事汇01码农故事汇张向阳的学历远达不到百度阿里腾讯等IT大厂的招聘要求,虽然他是根正苗红的计算机科班出身,可学历…

    2022年9月27日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号