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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 【安装填坑】—- ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory:

    【安装填坑】—- ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory:用anaconda安装python开发环境的时候,使用pip安装某些包,会弹出如下这种提示ERROR:CouldnotinstallpackagesduetoanOSError:[Errno2]Nosuchfileordirectory:’d:\users\xxxx\appdata\local\continuum\anaconda3\envs\faiss\lib\site-packages\numpy-1.20.3.dist-info\METADATA’除了要修改注册表

    2022年6月24日
  • SQL Prompt 激活成功教程教程「建议收藏」

    SQL Prompt 激活成功教程教程「建议收藏」SQLPrompt7激活成功教程教程,SQL语法提示工具本文最新地址:SQLPrompt7激活成功教程教程,SQL语法提示工具链接:https://pan.baidu.com/s/13WIIGx88bfRQE6vcQuFT8w提取码:u2ln当我们在写SQL语句的时候,没有语法提示,效率低,今天给大家分享一款软件以及激活成功教程方法。看下图,是不是很方便了呢?注册机会报毒,安装前请先关闭杀毒软件!…

    2022年7月14日
  • JQuery-学习笔记03【基础——DOM操作】「建议收藏」

    JQuery-学习笔记03【基础——DOM操作】「建议收藏」JQuery-学习笔记03【基础——DOM操作】

    2022年9月12日
  • pycharm加断点_破地方转CAD

    pycharm加断点_破地方转CAD转自:https://blog.csdn.net/u013088062/article/details/50216015转载于:https://www.cnblogs.com/everfight/p/pycharm_debug.html

    2022年8月25日
  • qmake的使用

    qmake的使用前言在linux环境下进行程序开发时,经常需要使用makefile管理编译代码,特别是一些大型工程,而makefile工具语法晦涩深入研究较为困难,好在有很多工具可以自动生成makefile,qmake就是其中的一种。qmake特点为不同的平台的开发项目创建makefile。可以供给任何一个软件项目使用,而不用管它是不是用Qt写的,尽管它包含了为支持Qt开发所拥有的额外的特征。…

    2022年5月19日
  • 《语音信号处理》整理[通俗易懂]

    reference《spokenlanguageprocessing》1语音基础 名词解释 pitch音调以HZ为单位基频又称音高能量又称音强说话的声音(声带震动)和其他声音相比,有独特的时域和频域模式。声带的震动产生基频(fundamentalfrequency),口腔共振(thepharyngealandoralresonancecav…

    2022年4月3日

发表回复

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

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