【Java】JVM GC配置指南
1、JDK版本
以下所有优化全部基于JDK8版本,强烈建议低版本升级到JDK8,并尽可能使用update_191以后版本。
2、如何选择垃圾回收器
响应优先应用:面向C端对响应时间敏感的应用,堆内存8G以上建议选择G1,堆内存较小或低版本JDK选择CMS;
吞吐量优先应用:对响应时间不敏感,以高吞吐量为目标的应用(如MQ、Worker),建议选择ParallelGC;
3、各回收器优化参数
1)基本参数配置(所有应用、所有回收器都需要):
-Xmx(一般为容器内存的50%)-Xms(与Xmx一致)-XX:MetaspaceSize(通常256M~512M)-XX:ParallelGCThreads=容器核数-XX:CICompilerCount=容器核数(必须大于等于2)
2)ParallelGC
除以上参数外,一般不需要额外调优(JDK8默认回收器)
3)CMS
-XX:+UseConcMarkSweepGC-Xmn (一般为堆内存的三分之一),尤其是配置了ParallelGCThreads后必须配置此参数-XX:ConcGCThreads=n(默认为ParallelGCThreads/4,可视情况调整至ParallelGCThreads/2)-XX:+UseCMSInitiatingOccupancyOnly-XX:CMSInitiatingOccupancyFraction=70(推荐值)
4)G1
-XX:+UseG1GC-XX:ConcGCThreads=n(默认为ParallelGCThreads/4,可视情况调整至ParallelGCThreads/2)-XX:G1HeapRegionSize=8m(若堆内存在8G以内且有较多大对象推荐设置此值)
*注意不要设置-Xmn 和 XX:NewRatio
5)其他调优参数
-XX:+ParallelRefProcEnabled 如果GC时Reference处理时间较长,例如大量使用WeakReference对象,可以通过此参数开启并行处理
4、开启GC日志
-XX:+PrintGCDetails-XX:+PrintGCDateStamps-Xloggc:/export/Logs/gc.log
5、如何判断GC是否正常
1)GC 是否频繁:YoungGC 频率一般几十秒钟一次,FullGC 一般每天几次,注意 G1 回收器不应该出现 FullGC;
2)GC耗时:耗时主要取决于堆内存大小及垃圾对象数量。YoungGC时间通常应在几十毫秒,FullGC通常在几百毫秒;
3)每次GC内存是否下降:应用刚启动时,每次YoungGC内存应该回收到较低水位,随着时间推移老年代逐步增多,内存水位会逐步上涨,直到FullGC/MixedGC(G1),内存会再次回到较低水位,否则可能存在内存泄漏;
4)如果使用ParallelGC,堆内存耗尽才会触发FullGC,所以不用配置堆内存使用率告警,但需关注GC频率;
相关文章:
【Java】JVM GC配置指南
1、JDK版本 以下所有优化全部基于JDK8版本,强烈建议低版本升级到JDK8,并尽可能使用update_191以后版本。 2、如何选择垃圾回收器 响应优先应用:面向C端对响应时间敏感的应用,堆内存8G以上建议选择G1,堆内存较小或低…...
11.Eclipse 注释模板的说明及设置
1.在eclipse中点击Window——>java——>Code Style——>CodeTemplates——>Comments 2.常用Variable 3. 我的注释模板 ①Files 文件 /** * Title: ${file_name}* Description: ${todo}* author Jeremy* date ${currentDate:date(yyyy-MM-dd hh:mm:ss)} */ ②Typ…...
Maven父子工程项目的配置
在Java的Maven多模块(父子工程)项目中,Maven插件的配置非常重要,因为它们可以帮助你进行项目构建、测试、打包等各种任务。以下是一个简单的父子工程Maven插件配置的示例: 假设你有如下的项目结构: paren…...
jumpserver命令记录膨胀问题
一.背景 jumpserver堡垒机针对只是接管ssh来说,正常操作Linux的指令记录应该不会太多,每天有个几千条都已经算很多了。所以默认jumpserver采用MySQL作为存储介质本身也没啥问题。但是我们使用jumpserver对【MySQL应用】进行了托管,导致查询SQ…...
ControlNet
2023.8.10 Adding Conditional Control to Text-to-Image Diffusion Models 对于 T2I 扩散模型添加 条件控制 相关联比较大的几篇论文: 0.Abstract 可以为预训练的扩散模型提供额外的输入条件控制。不需要很多计算资源。 即使在小数据集上,也具有鲁棒…...
竞赛项目 深度学习图像风格迁移 - opencv python
文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习图像风格迁移 - opencv python 该项目较为新颖,适合作为竞赛课题…...
Windows dos文件夹与文件怎么创建与删除
在Windows操作系统中,你可以使用命令行工具(命令提示符或PowerShell)来创建和删除文件夹和文件。以下是创建和删除文件夹和文件的基本方法: 创建文件夹: 使用mkdir命令来创建文件夹(目录)。 m…...
JVM总结2
1.基本概念 java代码执行 代码编译class:javac 源文件通过编译器产生字节码文件,字节码文件通过jvm的解释器编译成机器上的机器码 装载class:ClassLoader执行class: 解释执行编译执行 client compilerserver compiler 内存管理…...
servlet三大类HttpSevlet,HttpServletRequest,HttpServletResponse介绍
一、HttpServlet HttpServlet类是一个被继承的方法,可以看做一个专门用来响应http请求的类,这个类的所有方法都是为响应http请求服务的,要对一个某个路径谁知http响应时,需要写一个类来继承HttpServlet类,并重写里面的…...
【雕爷学编程】Arduino动手做(12)---霍尔模块之霍尔磁感应声光报警器(磁控开关,接220V)
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…...
认识 SQL
文章目录 1.简介2.组成3.工作原理4.五种子语言5.注释方式6.字符串表示方式参考文献 1.简介 SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系型数据库的标准化查询语言。它是一种领域特定语言(DSL&#x…...
【剑指Offer 58】翻转单词顺序,Java解密。
LeetCode 剑指Offer 75道练习题 文章目录 剑指Offer:翻转单词顺序示例:限制:解题思路:剑指Offer:翻转单词顺序 【题目描述】 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a stu…...
微服务Ribbon-负载均衡原理
目录 一、LoadBalancerIntercepor 二、LoadBalancerClient 三、负载均衡策略IRule 四、总结 上一篇中,我们添加了LoadBalanced注解,即可实现负载均衡功能,这是什么原理呢? SpringCloud底层其实是利用了一个名为Ribbon的组件&…...
如何实现Vue的异步组件?如何在Vue中使用本地存储?什么是Vue的指令模块化?
1、如何实现Vue的异步组件? 在Vue中,可以使用异步组件来加载远程数据,或者在组件的生命周期中执行一些耗时操作。实现异步组件,需要使用Vue的异步组件和Vue的组件系统。 下面是一个基本的示例: <template><…...
《HeadFirst设计模式(第二版)》第六章代码——命令模式
代码文件目录: Command package Chapter6_CommandPattern.Command;/*** Author 竹心* Date 2023/8/6**/public interface Command {public void execute();public void undo();//撤销该指令 }CeilingFan package Chapter6_CommandPattern.ElectricAppliance;/*** …...
JS 原型与继承2
//***-、原型、原型链、构造函数 prototype、 proto_、constructor function Foo(){this.a1} var foo new Foo(); Object.getPrototypeOf(foo);//访问对象原型 效果等同于,foo. proto ,只是更推荐使用 Es6的 Object.getPrototypeof()方式 // construct…...
账号登录相关的一点随笔
最后更新于2023年8月8日 14:25:32 JWT验证: 简单:一个token验证; 前端发来登录信息,后端验证通过后,将token发回前端; 复杂:Access Token Refresh Token验证: 将Access Token和R…...
常见的一些BUG
常见的一些BUG,但实际上在编写代码时,我们应该尽可能避免这些类型的错误: 变量名与函数名冲突: def main(): print("Hello, World!") main 5 print("The value of main is:", main) 函数参数传递错误&…...
ChatGPT在智能社交网络分析和关系挖掘中的应用如何?
智能社交网络分析和关系挖掘是当今信息时代中的重要研究领域,它们通过运用人工智能、机器学习和数据挖掘技术,从社交网络中提取有价值的信息,洞察用户之间的关系和行为模式。ChatGPT作为一种强大的自然语言处理模型,在智能社交网络…...
你不了解的Dictionary和ConcurrentDictionary
最近在做项目时,多线程中使用Dictionary的全局变量时,发现数据并没有存入到Dictionary中,但是程序也没有报错,经过自己的一番排查,发现Dictionary为非线程安全类型,因此我感觉数据没有写进去的原因是多线程…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...
高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。
2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...
Appium下载安装配置保姆教程(图文详解)
目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...
