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回收次数减少
外部启动
第一步,通过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在做回收。
Springboot 项目JVM优化相关推荐
- springboot项目启动优化
2019独角兽企业重金招聘Python工程师标准>>> 调试Spring启动速度 <context:component-scan>使用说明 Spring组件扫描<c ...
- SpringBoot项目优化和Jvm调优(亲测,真实有效)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:星朝 原文:cnblogs.com/jpfss/p/9753 ...
- java项目processes设置,Jvm调优和SpringBoot项目优化的详细教程
参考文章 1.先看一下未设置JVM参数的情况,默认情况下,没有设置任何Jvm参数. 2.设置Jvm参数. 配置参数: 关于这些设置的JVM参数是什么意思,参考Jvm调优. -XX:MetaspaceS ...
- SpringBoot项目优化和Jvm调优(楼主亲测,真实有效)
今日推荐Spring新版本抛弃JVM,可独立部署,网友:要自立门户???国内大神成功给手机装上了 Win11,代码已开源!Fluent Mybatis 牛逼!Nginx 常用配置清单这玩意比Threa ...
- SpringBoot项目优化和Jvm调优及VisualVM远程连接监控JVM(JMX连接)
项目调优 作为一名工程师,项目调优这事,是必须得熟练掌握的事情. 在SpringBoot项目中,调优主要通过配置文件和配置JVM的参数的方式进行. 在这边有一篇比较好的文章,推荐给大家! Spring ...
- springboot不会运行gc_SpringBoot项目深度优化和Jvm调优
点击上方"Java学习之道",选择"关注"公众号 每天上班,干货准时送达! 本文作者:星朝 本文来源:www.cnblogs.com/jpfss/p/97532 ...
- 这样做优化,实现 0.059s 启动一个SpringBoot项目!
大家好,我是老赵! 前言 最近自己用Spring Cloud Alibaba做了一个微服务架构的项目,部署的时候遇到了难题:内存不够.目前该项目有7个微服务,因为我只有一台阿里云的服务器(2C 4G) ...
- java8的jvm优化_基于JDK8 版本的SpringBoot 启动参数优化(建议收藏)
Linux端运行项目命令 java -jar -XX:MetaspaceSize=128m-XX:MaxMetaspaceSize=128m-Xms1024m -Xmx1024m-Xmn256m-Xs ...
- Docker 部署SpringBoot项目不香吗?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:流星007 链接:toutiao.com/i68433912 ...
最新文章
- wordpress自适应表格_给WordPress添加自适应表格 让表格自适应屏幕
- JAVA线程六种状态_Java:线程的六种状态及转化
- 在weka中配置自己的算法 zz
- C++使用kahn实现topological sort拓扑排序算法(附完整源码)
- jzoj6313-Maja【dp】
- 设计图与html 对比
- jq 通过标签名称获取标签_如何快速通过今日头条原创标签的审核?
- Serverless实战 —— 三分钟入坑指北 Docsify + Serverless Framework 快速创建个人博客系统
- python十大实例_Python练习实例100例(从简入难)96-100
- php 目录及文件操作
- .NET设计模式(1):1.1 单例模式(Singleton Pattern)
- 三分钟带你了解移动通讯办公软件
- 给页面加上loading加载效果
- Atitit uke协会产业分类法 艾提拉产业分类法五大类法 目录 1. 配第-克拉克定理概述 产业趋势 有形财物的生产转向无形的服务性生产	1 1.1. 农工商趋势法	1 1.2. 1940年,英
- spring自动注入模型
- 极客范十足!10块钱打造你的专属PCB名片
- The forked VM terminated without properly saying goodbye. VM crash or System
- 大一计算机题库百度云,《大学计算机基础》试题题库及答案.doc
- 资料汇总更新|软件安装包、书籍、源码、技术文档、手册……
- ESP32_学习笔记(一)NVS的操作(存储和读取大数组)(为什么存入数据成功,读取却为零的原因)
热门文章
- Android----网络图片游览器
- C语言 题目 1725: 统计字符
- django 按经纬度计算距离排序
- 爱情36技之一劳永逸
- Hi3861开发环境搭建 ||避坑指南|| [适用于几乎所有以Hi3861为主控的开发板]
- win7 64位编译32位应用程序和64位应用程序
- 『Three.js』几个简单的入门动画(新手篇)
- 使用前端QrCode.js实现根据输入内容生成二维码,并提供二维码下载功能(已使用在交付项目中)
- 财务人员办公流程自动化-财务部门RPA机器人流程自动化解决方案
- 智能手表 android auto 闪退,小天才电话,升级闪退问题,每次都这样,差评!