JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置
Xmn Xms Xmx Xss有什么区别?Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果。
-Xms 堆内存的初始大小,默认为物理内存的1/64-Xmx 堆内存的最大大小,默认为物理内存的1/4-Xmn 堆内新生代的大小。通过这个值也可以得到老生代的大小:-Xmx减去-Xmn
-Xss 设置每个线程可使用的内存大小,即栈的大小。在相同物理内存下,减小这个值能生成更多的线程,当然操作系统对一个进程内的线程数还是有限制的,不能无限生成。线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会出现内存溢出的错误。除了这些配置,JVM还有非常多的配置,常用的如下:
堆设置-Xms:初始堆大小-Xmx:最大堆大小-Xmn:新生代大小-XX:NewRatio:设置新生代和老年代的比值。如:为3,表示年轻代与老年代比值为1:3
-XX:SurvivorRatio:新生代中Eden区与两 ...
Untitled
查看 默认参数123456789101112C:\Users\shuzhuo>java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize" intx CompilerThreadStackSize = 0 {pd product} uintx ErgoHeapSizeLimit = 0 {product} uintx HeapSizePerGCThread = 87241520 {product} uintx InitialHeapSize ...
当前测试
环境
系统
RAM
java version
chrome version
win10 专业版 21H1
16G
jdk8 U201
95.0.4638.69
设置运行参数为6g
1-Xms6g -Xmx6g
系统以《云上贵州系统平台(电信节点)的设备》 增加 测评对象
首次导入系统数据包 为测试数据1
测试数据1资产
机房
网络设备
安全设备
服务器 存储设备
终端
系统管理软件
业务应用系统
总数
测评对象
1
89
60
426
1
72
6
655
总数
1
99
60
563
1
90
6
820
导入导出数据,再次导出点击 所有 tab 最后点保存,页面崩溃。后端无OOM
测评记录操作所有tab 点开(点完一个马上点下一个)
重启再次所有tab 快速点开 ,直接OOM
风险评估操作 加载页面完成点击保存
最大内存超过5G
测试数据2资产
机房
网络设备
安全设备
服务器 存储设备
终端
系统管理软件
业务应用系统
总数
测评对象
1
89
60
563
1
72
6
792
总数
1
99
60
563
1 ...
SpringBoot项目集成阿里Druid连接池
阿里的开源Druid,GitHub上有相关介绍,链接地址如下:
Druid源码地址:https://github.com/alibaba/druid
中文文档:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
英文文档:https://github.com/alibaba/druid/wiki/FAQ
SpringBoot集成Druid:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
1. POM中引入依赖Maven12345<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version></dependency> ...
Spring 之@Autowired注入集合类List、Set、Map
代码首先创建一个接口和两个实现类:
12public interface ITestService {}
1234567/** * @order 值越少优先级越高 */@Component@Order(-100)public class TestServiceImpl implements ITestService {}
1234567891011import org.springframework.core.annotation.Order;import org.springframework.stereotype.Component;/** * @order 值越少优先级越高 */@Component@Order(-2)public class Test2ServiceImpl implements ITestService {}
测试下面将这两个实现类实例注入到集合中:
1234567891011121314151617181920212223242526272829303132333435363738394 ...
aop 重试框架基本封装
方式1依赖
不加人这个依赖不会生效,代码也不报错,坑死
springboot 2.7.4
1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>
1extends AbstractPointcutAdvisor
1234567891011import org.springframework.context.annotation.Import;import java.lang.annotation.*;@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(RetryRegistrarConfiguration.class)//@Import(RetryImportSelectorRegistrar.class ...
druid
设置监控
12345678910111213141516171819202122232425262728293031323334######Druid监控配置#######下面配置说明请参考Druid Github Wiki,配置_配置WebStatFilter#是否启用StatFilter默认值truespring.datasource.druid.web-stat-filter.enabled=true# 匹配规则spring.datasource.druid.web-stat-filter.url-pattern=/druid/*#排除一些不必要的urlspring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*#是否开启session统计功能spring.datasource.druid.web-stat-filter.session-stat-enable=true# 缺省sessionStatMaxCount是1000个spring.datasou ...
arthas学习笔记
排查函数调用异常查看 参数/异常1watch com.example.demo.arthas.user.UserController * '{params, throwExp}' -x 2
第一个参数是类名,支持通配
第二个参数是函数名,支持通配
条件表达式watch 命令支持在第 4 个参数里写条件表达式,比如:
1watch com.example.demo.arthas.user.UserController * returnObj 'params[0] > 100'
当返回参数>100 才在控制台打印
当异常时捕获watch 命令支持-e 选项,表示只捕获抛出异常时的请求:
1watch com.example.demo.arthas.user.UserController * "{params[0],throwExp}" -e
按照耗时进行过滤watch 命令支持按请求耗时进行过滤,比如:
1watch com.example.demo.a ...
logback-mdc
mdc 可以配配合模糊匹配查找日志
12345cat -n info.log |grep "a415ad50dbf84e99b1b56a31aacd209c"或者grep -10 'a415ad50dbf84e99b1b56a31aacd209c' info.log (10是指上下10行)
pom.xml 依赖
123456789101112131415161718192021<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> ...
mp代码生成
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135import com.baomidou.mybatisplus.generator.FastAutoGenerator;import com.baomidou.mybatisplus.generator.config.*;import com.baomidou.mybatisplus.generator.config.rules.DateType;import com.stark37125.core.b ...