Java中JVM常用参数配置(提供配置示例)

news2024/9/22 4:52:46

目录

    • 前言
    • 一、内存参数配置
    • 二、垃圾收集器配置
    • 三、GC策略配置
      • 3.1、基础通用配置
      • 3.2、Parallel 和 Parallel Old 常用参数配置
      • 3.3、CMS 常用参数配置
      • 3.4、G1 常用参数配置
    • 四、GC日志配置
    • 五、dump 日志参数配置
      • 5.1、OutOfMemory异常时生成dump文件
      • 5.2、发生Full GC时生成dump文件
    • 六、其它参数配置
    • 七、配置示例
      • 7.1、在IDEA中配置JVM参数
      • 7.2、通过 Java -jar 启动配置

前言

      在实际开发和部署中一个合格的码农都会对JVM的一些参数做合理的配置,比如内存配置参数、GC策略配置参数、日志配置参数、异常信息参数等,本文会列出一些常用的JVM参数以及通过一些例子演示配置后的效果。

PS:本文使用JDK1.8

一、内存参数配置

// 设置JVM使Server模式,特点是启动速度较慢,但运行时性能和内存管理效率很高,适用于生产环境。在具有64位能力的JDK环境下默认启用该模式。
-server 

// 设置元空间最大值, 默认是-1, 即不限制, 或者说只受限于本地内存大小,如果超过这个值会内存溢出。
-XX:MaxMetaspaceSize=256m
// 指定元空间触发Fullgc的初始阈值(元空间无固定初始大小), 以字节为单位,默认是21M,达到该值就会触发full gc进行类型卸载, 同时收集器会对该值进行调整: 如果释放了大量的空间, 就适当降低该值; 如果释放了很少的空间, 那么在不超过-XX:MaxMetaspaceSize(如果设置了的话) 的情况下, 适当提高该值。这个跟早期jdk版本的-XX:PermSize参数意思不一样,-XX:PermSize代表永久代的初始容量。
// 触发一次元空间Full GC后就会重新计算该值,建议设置成和最大内存一致
-XX:MetaspaceSize=256m


// 设置最大堆内存,默认是物理内存的1/4,内存的单位可以是m g,并且不区分大小写
-Xmx2g 或者 -XX:MaxHeapSize=2048m
// 设置初始值堆内存,默认是物理内存的1/64,内存的单位可以是m g,并且不区分大小写
-Xms2g 或者 -XX:InitialHeapSize=2048m
// 设置年轻代内存大小,默认和老年代1\2,-XX:NewSize初始化年轻代大小 -XX:MaxNewSize最大年轻代大小
-Xmn1g 或者 -XX:NewSize=1g -XX:MaxNewSize=1g
// 设置每个线程的堆栈大小 默认是1024k,这个是最大内存并不是开启一个线程马上就会消耗这么多内存
-Xss512k 或者 -XX:ThreadStackSize=512k


// 年轻代占用堆比例(如果有配置-Xmn,那么会以-Xmn配置为准)
// 默认 -XX:NewRatio=2新生代占1,老年代占2,年轻代占整个堆的1/3
// 假如 -XX:NewRatio=4新生代占1,老年代占4,年轻代占整个堆的1/5 NewRatio值就是设置老年代的占比,剩下的1给新生代
-XX:NewRatio=2 
// 用来设置新生代中eden空间和from/to空间的比例.含义:-设置为8代表 eden使用80%的新生代内存 from和to各用10%,默认为8
-XX:SurvivorRatio=8
// 禁用Survivor区自适应策略默认是开启的,如果不关闭这个配置新生代eden区和s0 s1区会在gc后自动调整大小,如果设置了-XX:SurvivorRatio也只有在没有GC之前有效只要GC后就会重新动态计算
-XX:-UseAdaptiveSizePolicy


// 扩张堆内存的时机
// 堆内存使用率大于70时扩张堆内存,如果最大堆内存=初始堆内存时该参数无效,默认值70
-XX:MaxHeapFreeRatio=70
// 缩小堆内存的时机
// 堆内存使用率小于40时缩减堆内存,如果最大堆内存=初始堆内存时该参数无效,默认值40
-XX:MinHeapFreeRatio=40

// 字符串常量池hash桶大小 类似于HashTable,最小值1009 默认60013 不可动态扩容
-XX:StringTableSize=60013

// 设置直接内存大小,NIO(Non-blocking I/O)中通过ByteBuffer等对象分配的堆外内存
// 默认情况下,直接内存的大小可能会与Java堆的最大值 (-Xmx) 相同
-XX:MaxDirectMemorySize=512m

二、垃圾收集器配置

// 配置使用Serial单线程垃圾收集器,虚拟机运行在Client模式下的默认值
// 新生代使用Serial  老年代则使用SerialOld
-XX:+UseSerialGC

// 配置使用ParNew垃圾收集器
// 新生代使用ParNew 老年代则使用Serial Old
-XX:+UseParNewGC

// 配置使用Parallel Scavenge垃圾收集器,虚拟机运行在Server模式下的默认值
// 新生代使用Parallel Scavenge 老年代使用Parallel Old收集器
-XX:+UseParallelGC

// 配置使用Parallel Old垃圾收集器
// 新生代使用Parallel Scavenge 老年代使用Parallel Old收集器
-XX:+UseParallelOldGC

// 配置使用CMS垃圾收集器
// 新生代使用ParNew 老年代使用CMS+Serial Old收集器
-XX:+UseConcMarkSweepGC

// 配置使用G1垃圾收集器
-XX:+UseG1GC

可以通过jinfo -flags 进程号查看对应Java程序启动参数,我本地使用的JDK1.8默认使用的ParallelGC
在这里插入图片描述

三、GC策略配置

3.1、基础通用配置

// GC停顿时间,垃圾收集器会尝试用各种手段达到这个时间,比如减小年轻代
-XX:MaxGCPauseMillis 

// 新生代晋升老年代阈值 默认是15 不同回收算法不同
-XX:MaxTenuringThreshold=15

// 对象动态年龄判断默认50%  当一批对象大小>=survivor区的50%时这批对象会直接放入老年代
-XX:TargetSurvivorRatio=50

// 默认值是0没有限制 大于这个值的参数直接在老年代分配
// 这样做的目的是避免在Eden区和两个Survivor区之间发生大量的内存复制XX:PretenureSizeThreshold=1m

// 忽略手动调用GC, System.gc()的调用就会变成一个空调用,完全不触发GC
-XX:+DisableExplicitGC 

// 内存页的大小
-XX:LargePageSizeInBytes=128m 

// 设定GMT区域,避免CentOS坑爹的时区设置
-Duser.timezone=GMT+8

// FullGC 前执行MinorGC  默认是开启的
-XX:+ScavengeBeforeFullGC

3.2、Parallel 和 Parallel Old 常用参数配置

// 调整垃圾回收的时间和总时间的占比 公式 1/(1+ratio)  ratio默认是99,100分钟运行时间默认不能超过1分钟的GC时间,ratio一般设置为19
-XX:GCTimeRatio=99

// GC最大暂停毫秒数 默认是200毫秒 和-XX:+GCTimeRatio有冲突,堆内存小回收速度才会快,而-XX:+GCTimeRatio需要保证一定时间内GC时间不能超过一个临界值需要增加内存才能减小GC时间比,需要找到一个两个参数的合理值
-XX:MaxGCPauseMillis=200ms

// 设置垃圾回收线程数量 默认是CUP内核数量
-XX:ParallelGCThreads=4

3.3、CMS 常用参数配置

// GC最大暂停毫秒数 默认是200毫秒
-XX:MaxGCPauseMillis=200ms

// 为了加快此阶段处理速度,减少停顿时间,可以开启初始标记并行化
-XX:+CMSParallelInitialMarkEnabled

// CMS并行线程数量,并行线程用于执行 CMS 垃圾回收器的并行阶段,如初始标记阶段和重新标记阶段
// 默认值为系统的逻辑处理器数量减1,目的是为了保留一个处理器用于应用程序线程
-XX:ParallelCMSThreads=3

// CMS并发线程数量,并发线程用于执行 CMS 垃圾回收器的并发阶段,如初始标记阶段、并发标记阶段和并发清理阶段。
// 默认值为系统的逻辑处理器数量减1,目的是为了保留一个处理器用于应用程序线程
-XX:ConcGCThreads=3

// 执行CMS的内存占比 percent=80 当我的老年代内存达到80%触发垃圾回收 默认是92% 应为CMS采用标记清除需要给浮动垃圾(在最后一步并发清除时其它没有被标记的垃圾遗留)预留空间 
-XX:CMSInitiatingOccupancyFraction=percent

// 该参数需要配合XX:CMSInitiatingOccupancyFraction使用,只使用设定的回收阈值(-XX:CMSInitiatingOccupancyFraction设 定的值),如果不指定,JVM仅在第一次使用设定值,后续则会自动调整
-XX:+UseCMSInitiatingOccupancyOnly 

// 重新标记阶段前提前进行一次新生代GC,因为重新标记也会判断新生代对象是否引用老年代对象,有些时候新生代对象已经没有被GC root对象引用但是还没有GC时,重新标记会扫描到新生代对象并且保留新生代对象引用的老年代对象,默认关闭false
-XX:CMSScavengeBeforeRemark=true

// 执行完Full GC后对内存空间进行压缩整理 默认开启
-XX:+UseCMSCompactAtFullGollection

// 设置在执行多少次Full GC后对内存空间进行压缩整理 默认0次,只要触发Full GC就会进行内存压缩
-XX:CMSFullGCsBeforeCompaction=0

// 垃圾回收时是否同时卸载不用的class信息,默认关闭
-XX:+CMSClassUnloadingEnabled

3.4、G1 常用参数配置

// 指定分区大小(1MB~32MB,且必须是2的N次幂),不设置默认会根据堆大小分配
// 堆内存为1G默认1024个1MB分区、堆内存为2G默认2048个1MB分区、堆内存为4G默认2048个2MB分区、堆内存为4G默认2048个2MB分区、堆内存为6G默认6144个1MB分区、堆内存为8G默认2048个4MB分区、以此类推
-XX:G1HeapRegionSize=2m

// 目标暂停时间(默认200ms) 
-XX:MaxGCPauseMillis=200ms

// 新生代内存初始空间(默认整堆5%) 
-XX:G1NewSizePercent=5

// 新生代内存最大空间 (默认整堆60%) 
-XX:G1MaxNewSizePercent=60

// Survivor区的填充容量(默认50%),Survivor区域里的一批对象(年龄1+年龄2+年龄n的多个 年龄对象)总和超过了Survivor区域的50%,此时就会把年龄n(含)以上的对象都放入老年代 
-XX:TargetSurvivorRatio=50

// 最大年龄阈值(默认15) 
-XX:MaxTenuringThreshold=15

// 老年代占用空间达到整堆内存阈值(默认45%),则执行新生代和老年代的混合收集(MixedGC) 
-XX:InitiatingHeapOccupancyPercent=45

// region中的存活对象低于这个值时才会回收该region,如果超过这个值,存活对象过多,回收的的意义不大(默认65%)。 
-XX:G1MixedGCLiveThresholdPercent=65

// 在一次回收过程中指定做几次筛选回收(默认8次),在最后一个筛选回收阶段可以回收一会,然后暂停回收,恢复系统运行,一会再开始回收,这样可以让系统不至于单次停顿时间过长。 
-XX:G1MixedGCCountTarget=8

// gc过程中空出来的region是否充足阈值,在混合回收的时候,对Region回收都是基于复制算法进行的,都是把要回收的Region里的存活对象放入其他Region,然后这个Region中的垃圾对象全部清理掉,这样的话在回收过程就会不断空出来新的Region,一旦空闲出来的Region数量达到了堆内存的5%,此时就会立即停止混合回收,意味着本次混合回收就结束了(默认5%)。
-XX:G1HeapWastePercent=5

四、GC日志配置

// 设置日志目录和日志名称
-Xloggc:/data/logs/gc-%t.log

// 开启滚动生成日志 默认关闭
-XX:+UseGCLogFileRotation
// 滚动GC日志文件数,默认0不滚动,保留最多5个日志文件
-XX:NumberOfGCLogFiles=5
// GC文件滚动大小,需开启UseGCLogFileRotation,每个文件最大为20MB
-XX:GCLogFileSize=20M 

// 在进行GC的前后打印出堆的信息
-XX:+PrintHeapAtGC 
// 打印新生代晋升详情
-XX:+PrintTenuringDistribution
// 打印字符串常量池堆信息
-XX:+PrintStringTableStatistics
// 打印GC信息
-verbose:gc 
// 打印GC详细信息 
-XX:+PrintGCDetails
// 输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCTimeStamps
// 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintGCDateStamps 
// 打印当前JVM参数信息 建议在每个程序中都添加上
-XX:+PrintCommandLineFlags
// 产生GC的原因(默认开启)
-XX:+PrintGCCause

五、dump 日志参数配置

5.1、OutOfMemory异常时生成dump文件

// 默认关闭
// 可以通过jinfo -flag [+|-]HeapDumpOnOutOfMemoryError <pid> 或 jinfo -flag HeapDumpOnOutOfMemoryError=<value> <pid> 来动态开启或设置值
-XX:+HeapDumpOnOutOfMemoryError
// 设置文件存储路径
// 当HeapDumpOnOutOfMemoryError开启的时候,dump文件的保存路径,默认为工作目录下的,可以通过配置指定保存路径
-XX:HeapDumpPath=/data/dump/jvm.hprof

5.2、发生Full GC时生成dump文件

不推荐开启会增加整体停顿时间

// 在Full GC前dump
-XX:+HeapDumpBeforeFullGC
// 在Full GC后dump
-XX:+HeapDumpAfterFullGC
// 设置Dump保存的路径
-XX:HeapDumpPath=/data/dump/jvm.hprof

六、其它参数配置

// JVM自身故障导致进程奔溃时,会有一个日志文件生成,它包含了导致crash的重要信息,通过分析文件来查找crash原因
-XX:ErrorFile=/data/logs/error.log

// JDK1.6开始,默认server模式下开启了这个参数,意为当jvm检测到程序在重复抛一个异常
// 在执行若干次后会将异常吞掉,这里的若干次在jdk1.7测得是20707。即执行20707次后,stackTrace 长度会为0。有时这不利于我们排错,通过指定OmitStackTraceInFastThrow,可禁用这功能
-XX:-OmitStackTraceInFastThrow

七、配置示例

需要配置的参数信息

// 配置新生代使用Parallel Scavenge 老年代将会使用Parallel Old收集器
-XX:+UseParallelOldGC
// 配置元空间最大内存和初始内存
-XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m
// 配置最大堆内存、初始内存、新生代占用内存
-Xmx512m -Xms512m -Xmn256m
// 配置关闭动态调整新生代eden和from to大小比例
-XX:-UseAdaptiveSizePolicy
// 配置忽略手动调用GC和时区
-XX:+DisableExplicitGC -Duser.timezone=GMT+8
// 配置开启记录OOM Dump信息和存储地址
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./jvm.hprof
// 配置打印当前JVM参数信息
-XX:+PrintCommandLineFlags
// 配置开启GC日志输出
-verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -Xloggc:./gc-%t.log
// 配置关闭重复多次抛同一个异常不输出
-XX:-OmitStackTraceInFastThrow
// 配置JVM自身故障导致宕机时日志输出目录
-XX:ErrorFile=./error.log

7.1、在IDEA中配置JVM参数

  • 配置参数(注意文件的输出目录,我这里会直接输出在当前目录)
-XX:+UseParallelOldGC
-XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m
-Xmx20m -Xms20m -Xmn10m
-XX:-UseAdaptiveSizePolicy
-XX:+DisableExplicitGC -Duser.timezone=GMT+8
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./jvm.hprof
-XX:+PrintCommandLineFlags
-verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -Xloggc:./gc-%t.log
-XX:-OmitStackTraceInFastThrow
-XX:ErrorFile=./error.log
  • 配置流程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

7.2、通过 Java -jar 启动配置

# 应用配置示例
nohup java -XX:+UseParallelOldGC -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -Xmx512m -Xms512m -Xmn256m -XX:-UseAdaptiveSizePolicy -XX:+DisableExplicitGC -Duser.timezone=GMT+8 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./jvm.hprof -XX:+PrintCommandLineFlags -verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -Xloggc:./gc-%t.log -XX:-OmitStackTraceInFastThrow -XX:ErrorFile=./error.log -jar app.jar > app.log 2>&1 &

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1437028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++:编译器对被const修饰变量的处理行为(替换)

C&#xff1a;编译器对被const修饰变量的处理行为&#xff08;替换&#xff09; 前言原因代码验证 前言 最近博主在写笔试时看到了一道有关被const修饰变量相关题&#xff0c;原题如下&#xff1a; 对于初学者来说&#xff0c;虽然a是常量&#xff0c;但可以通过指针p的行为来…

EMNLP 2023精选:Text-to-SQL任务的前沿进展(下篇)——Findings论文解读

导语 本文记录了今年的自然语言处理国际顶级会议EMNLP 2023中接收的所有与Text-to-SQL相关&#xff08;通过搜索标题关键词查找得到&#xff0c;可能不全&#xff09;的论文&#xff0c;共计12篇&#xff0c;包含5篇正会论文和7篇Findings论文&#xff0c;以下是对这些论文的略…

Vue代理模式和Nginx反向代理(Vue代理部署不生效)

在使用axios时&#xff0c;经常会遇到跨域问题。为了解决跨域问题&#xff0c;可以在 vue.config.js 文件中配置代理&#xff1a; const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServer: {port: 7070,prox…

Linux设备树实现方式

设备树是用来管理板级设备的&#xff0c;就是用来描述开发板上CPU,内存&#xff0c;外设等信息的文件。 举个例子&#xff0c;某款芯片很火&#xff0c;很多厂商都选择该芯片来制作自己的开发板&#xff0c;这些开发板上的外设资源数目不一致&#xff0c;有可能用到相同外设但确…

代码随想录第28天|● 93.复原IP地址 ● 78.子集 ● 90.子集II

文章目录 93.复原IP地址思路&#xff1a;切割问题代码&#xff1a; 78.子集思路-找所有节点coding: 90.子集II思路-去重 93.复原IP地址 思路&#xff1a;切割问题 代码&#xff1a; 使用stringBuilder&#xff0c;故优化时间、空间复杂度&#xff0c;因为向字符串插入字符时无…

C++入门篇(3)auto关键字、内联函数、nullptr关键字

目录 1.auto关键字&#xff08;C11&#xff09; 1.1 typedef取别名的缺陷 1.2 auto 1.3 auto使用细则 1.3.1 auto与指针引用结合使用 1.3.2 同一行定义多个变量 1.4 auto不能推导的场景 1.4.1 auto不能作为函数的形参 1.4.2 auto不能直接用来声明数组 2. 内联函数 2…

net start mysql服务名无效|发生系统错误 解决办法

未输入正确的mysql服务名 解决办法&#xff1a; 使用net start命令查看可用的服务名&#xff0c;找到mysql的服务名 未使用管理员身份运行命令提示符 解决方法&#xff1a; 使用管理员身份运行命令提示符

【Yi-VL-34B】(5):使用3个3090显卡24G版本,运行Yi-VL-34B模型,支持命令行和web界面方式,理解图片的内容转换成文字

1&#xff0c;视频地址 https://www.bilibili.com/video/BV1BB421z7oA/ 2&#xff0c;关于Yi-VL-34B https://www.modelscope.cn/models/01ai/Yi-VL-34B/summary 易视觉语言&#xff08;Yi-VL&#xff09;模型是易大型语言模型&#xff08;LLM&#xff09;系列的开源多模态…

人工智能|深度学习——使用多层级注意力机制和keras实现问题分类

代码下载 使用多层级注意力机制和keras实现问题分类资源-CSDN文库 1 准备工作 1.1 什么是词向量? ”词向量”&#xff08;词嵌入&#xff09;是将一类将词的语义映射到向量空间中去的自然语言处理技术。即将一个词用特定的向量来表示&#xff0c;向量之间的距离&#xff08;例…

【buuctf--九连环】

这题主要是记录一下新的隐写工具 steghide 用binwalk 看一下 jpg 图片,还是有不少东西&#xff0c;那么-e 提取一下实际上通过binwalk 提取就避免了伪加密的问题&#xff0c;详见BUUCTF-九连环_九连环 buuctf-CSDN博客 其中 qwe.zip为真加密&#xff0c;需要找出密码&#xff…

计算机设计大赛 深度学习+opencv+python实现车道线检测 - 自动驾驶

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &am…

龙芯安装Nodejs

由于龙芯3A5000/6000使用的是LoongArch指令集&#xff0c;然而Nodejs只支持X64和ARM指令集&#xff0c;无法使用常规的安装方法&#xff0c;虽然官方提供了源码&#xff0c;能在电脑上自行编译执行&#xff0c;但本人尝试后显示编译失败&#xff0c;在网络上查找解决方法得知还…

RBAC权限控制实现方案

上一文章讲述了利用RBAC实现访问控制的思路&#xff08;RBAC实现思路&#xff09;&#xff0c;本文主要详细讲解利用vuex实现RBAC权限控制。 一、准备工作 从后台获取到权限对照表&#xff0c;如下&#xff1a; 1、添加/编辑楼宇 park:building:add_edit 2、楼宇管理 pa…

MySQL数据引擎、建库及账号管理

目录 一、MySQL数据库引擎 1.1.MySQL常见数据库引擎 1.InnoDB(MySQL默认引擎) 2.MyISAM 3.MEMORY&#xff08;Heap&#xff09; 1.2.存储引擎查看 二、建库 1.默认数据库介绍 2.建库 3.查看数据库 4.删除数据库 三、账号管理 1.创建用户 1.创建用户并设置登陆密码…

【电路笔记】-互感

互感 文章目录 互感1、概述2、互感3、耦合系数4、互感示例15、互感示例2 互感是一个线圈磁场与另一个线圈的相互作用&#xff0c;因为它在相邻线圈中感应出电压。 1、概述 互感是两个磁耦合线圈之间的电路参数&#xff0c;定义了一个线圈产生的时变磁通量被感应到相邻的第二个…

python coding with ChatGPT 打卡第17天| 二叉树:找树左下角的值、路径总和

相关推荐 python coding with ChatGPT 打卡第12天| 二叉树&#xff1a;理论基础 python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历 python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历 python coding with ChatGPT 打卡第15天| 二叉树&#xff1a;翻转…

Cpp-2

类与对象 /*类与对象&#xff1a;1.类是一种用户自定义的数据类型&#xff08;函数&#xff0c;数据&#xff09;2.类是具有相同的属性和行为的对象的集合3.类是对象的抽象&#xff0c;对象是类的具体4.对象&#xff1a;通过使用类类型定义的变量 */定义类 /*如何定义类&…

LabVIEW汽车自燃监测预警系统

LabVIEW汽车自燃监测预警系统 随着汽车行业的飞速发展&#xff0c;汽车安全问题日益受到公众的关注。其中&#xff0c;汽车自燃现象因其突发性和破坏性&#xff0c;成为一个不可忽视的安全隐患。为了有效预防和减少自燃事故的发生&#xff0c;提出了LabVIEW的汽车自燃监测预警…

ES节点故障的容错方案

ES节点故障的容错方案 1. es启动加载逻辑1.1 segment和translg组成和分析1.2 es节点启动流程1.3 es集群的初始化和启动过程 2. master高可用2.1 选主逻辑2.1.1 过滤选主的节点列表2.1.2 Bully算法2.1.2 类Raft协议2.1.3 元数据合并 2.2 HA切换 3. 分片高可用3.1 集群分片汇报3.…

前端常用代码整理(不断更新中)— js,jquery篇

1.随机函数代码 function getRandom(min, max) {return Math.floor(Math.random() * (max - min 1)) min}2.倒计时代码 let now new Date()// 2. 得到指定时间的时间戳let last new Date(这里写想要达到的时间)// 3. &#xff08;计算剩余的毫秒数&#xff09; / 1000 剩余…