Java性能优化巅峰对决,在程序员节当天解锁GC调优的5个关键时刻

第一章:Java性能优化巅峰对决,在程序员节当天解锁GC调优的5个关键时刻

在Java应用高并发与大数据处理场景中,垃圾回收(GC)行为直接影响系统吞吐量与响应延迟。程序员节这一天,正是深入GC调优的绝佳时机。掌握以下五个关键时刻,可显著提升JVM稳定性与性能表现。

识别Full GC频繁触发的征兆

当应用出现长时间停顿或响应时间陡增,需立即检查GC日志。可通过添加JVM参数开启详细日志:

-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log
分析日志中Full GC的频率与耗时,若每分钟发生多次且持续时间超过1秒,说明老年代空间不足或对象晋升过快。

合理选择垃圾回收器

根据应用特性选择合适的GC策略:
  • Serial GC:适用于单核环境的小型应用
  • Parallel GC:追求高吞吐量的批处理服务
  • G1 GC:低延迟要求的Web应用首选
  • ZGC/Shenandoah:超大堆(>16GB)且需亚毫秒停顿

优化堆内存分配比例

不当的新生代与老年代比例会导致频繁Minor GC或提前晋升。通过以下参数调整:

-Xms8g -Xmx8g -XX:NewRatio=2 -XX:SurvivorRatio=8
表示堆总大小8GB,新生代占1/3,Eden与Survivor比为8:1:1,减少幸存区溢出。

监控并减少大对象直接进入老年代

大对象(如缓存数组)会跳过Eden区直接进入老年代,加速空间耗尽。应避免短生命周期的大对象创建,并通过参数控制阈值:

// 示例:避免临时大数组
byte[] tempBuffer = new byte[2 * 1024 * 1024]; // 2MB,可能直接进老年代

利用可视化工具进行动态调优

使用JDK自带工具实时监控:
工具用途
jstat查看GC频率与内存分布
jconsole图形化监控堆使用趋势
VisualVM综合分析GC行为与线程状态

第二章:深入理解JVM内存模型与垃圾回收机制

2.1 JVM堆内存结构解析与对象分配策略

JVM堆内存是Java对象实例存储的核心区域,通常划分为新生代(Young Generation)和老年代(Old Generation)。新生代进一步细分为Eden区、Survivor From区和Survivor To区,采用复制算法进行垃圾回收。
堆内存结构示意
区域作用默认比例
Eden新对象优先分配8
S0/S1存放幸存对象1
Old长期存活对象存储2
对象分配流程
  • 新对象首先尝试在Eden区分配
  • Eden空间不足时触发Minor GC
  • 经过多次GC仍存活的对象晋升至老年代

// 示例:大对象直接进入老年代
byte[] data = new byte[1024 * 1024 * 5]; // 5MB
上述代码创建的大对象,若超过PretenureSizeThreshold阈值,将绕过新生代,直接在老年代分配,避免频繁复制开销。

2.2 常见GC算法对比:从Serial到ZGC的演进之路

垃圾回收(GC)算法的演进反映了Java应用对低延迟与高吞吐量的持续追求。早期的Serial GC采用单线程进行回收,适用于客户端小内存场景。
主流GC算法特性对比
GC类型线程模型适用场景停顿时间
Serial单线程客户端应用高
Parallel多线程吞吐量优先中
CMS并发标记清除低延迟需求较低
G1分区并发大堆、均衡场景低
ZGC并发、着色指针超大堆、极低延迟<10ms
ZGC核心机制示例
// 启用ZGC需指定JVM参数
-XX:+UseZGC -Xmx32g -XX:+UnlockExperimentalVMOptions
该配置启用ZGC并设置最大堆为32GB。ZGC通过着色指针和读屏障实现并发整理,显著降低STW时间,支持TB级堆内存,标志着GC技术进入超低延迟新时代。

2.3 G1收集器Region机制与Mixed GC触发原理

G1垃圾收集器将堆划分为多个大小相等的Region,每个Region可动态扮演Eden、Survivor或Old角色。这种设计打破了传统分代空间的连续性限制。
Region的动态分配机制
  • 每个Region大小在1MB到32MB之间,由JVM自动计算
  • 通过-XX:G1HeapRegionSize可手动指定
  • 允许部分Region为空闲(Humongous Region用于存储大对象)
Mixed GC触发条件
当年轻代GC后,满足以下条件将启动Mixed GC:

// 相关注控参数
-XX:InitiatingHeapOccupancyPercent=45  // 堆占用率阈值
-XX:G1MixedGCCountTarget=8             // 控制Mixed GC次数
该机制基于全局并发标记结果,优先回收垃圾最多的Old Region,实现高效的空间回收。

2.4 元空间与永久代的内存管理差异实践分析

Java 8 之前,类元数据存储在永久代(PermGen),受限于固定内存大小,容易引发 java.lang.OutOfMemoryError: PermGen space。自 Java 8 起,永久代被元空间(Metaspace)取代,类元数据移至本地内存管理。
核心差异对比
特性永久代元空间
内存区域JVM 堆内本地内存(Native Memory)
内存限制-XX:MaxPermSize-XX:MaxMetaspaceSize
默认上限64MB~82MB(依JVM)无上限(依赖系统内存)
参数配置示例
# 设置元空间最大大小
-XX:MaxMetaspaceSize=256m

# 触发垃圾回收的阈值
-XX:MetaspaceSize=128m
上述参数可有效控制元空间增长,避免因动态类加载(如反射、字节码增强)导致本地内存耗尽。元空间自动回收机制依赖于完整的 GC 周期,因此合理设置初始阈值有助于性能优化。

2.5 如何通过GC日志洞察性能瓶颈并定位问题

启用GC日志是性能分析的第一步。通过添加JVM参数,可捕获详细的垃圾回收行为:

-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M
上述配置将生成带时间戳的循环日志文件,便于长期监控与问题追溯。
日志关键指标解读
关注以下字段可快速识别瓶颈:
  • GC频率:频繁Minor GC可能意味着年轻代过小;
  • 停顿时间:Full GC持续时间长将直接影响应用响应;
  • 堆内存变化趋势:老年代持续增长可能暗示内存泄漏。
结合工具进行可视化分析
使用GCViewer或GCEasy等工具解析日志,生成吞吐量、暂停时间、内存分布图表,辅助判断是否需调整堆大小或更换GC算法。

第三章:GC调优核心指标与监控工具实战

3.1 吞吐量、延迟、停顿时间:如何权衡三大性能维度

在系统性能优化中,吞吐量、延迟和停顿时间构成核心三角。吞吐量指单位时间内处理的请求数,延迟是单个请求的响应耗时,而停顿时间则反映系统暂停服务的持续长度。
性能指标对比
指标定义优化方向
吞吐量每秒处理请求数(QPS)提升并发能力
延迟请求从发出到收到响应的时间减少处理开销
停顿时间系统不可服务的时间段优化GC、减少锁竞争
JVM垃圾回收中的权衡示例

-XX:+UseG1GC 
-XX:MaxGCPauseMillis=200 
-XX:G1HeapRegionSize=16m
上述JVM参数通过G1垃圾回收器控制最大停顿时间在200ms内,牺牲部分吞吐量以保障低延迟。其中MaxGCPauseMillis为目标停顿时长,G1HeapRegionSize调整堆区域大小以提高回收效率,体现三者间的取舍关系。

3.2 利用JVisualVM和JConsole进行实时GC行为观测

Java平台提供了多种内置工具用于监控JVM运行状态,其中JVisualVM和JConsole是两款轻量级、无需额外安装的可视化监控工具,适合实时观测垃圾回收(GC)行为。
启动与连接目标JVM
两者均通过本地进程列表自动发现正在运行的Java应用。启动后选择对应进程即可建立连接,无需配置远程调试参数。
监控GC关键指标
  • 堆内存使用趋势:图形化展示Eden、Survivor及Old区的内存变化
  • GC频率与耗时:统计Minor GC和Full GC的执行次数与暂停时间
  • 代际对象转移:观察从年轻代晋升至老年代的对象速率
jvisualvm
# 或
jconsole
上述命令在终端执行后将启动对应GUI工具,适用于开发与生产环境初步诊断。
图表:JVisualVM内存面板实时刷新堆空间占用曲线

3.3 使用Prometheus+Grafana构建生产级GC监控体系

在Java应用的生产环境中,垃圾回收(GC)行为直接影响系统稳定性与响应延迟。通过集成Prometheus与Grafana,可构建高精度、低开销的GC监控体系。
数据采集配置
使用Micrometer将JVM GC指标暴露为Prometheus可抓取格式:

@Bean
public MeterRegistryCustomizer<PrometheusMeterRegistry> metricsCommonTags() {
    return registry -> registry.config().commonTags("application", "user-service");
}
上述代码为所有指标添加应用名标签,便于多服务维度聚合分析。GC次数与耗时通过Gauge自动注册,无需手动埋点。
核心监控指标
  • jvm_gc_pause_seconds:记录每次GC停顿时长
  • jvm_gc_memory_allocated_bytes_total:堆内存分配速率
  • jvm_gc_live_data_size_bytes:老年代存活对象大小
结合Grafana面板设置告警规则,当Young GC频率超过每分钟10次或Full GC持续时间大于1秒时触发通知,实现主动式性能治理。

第四章:五大关键调优场景深度剖析

4.1 大对象分配引发频繁Full GC的诊断与优化

在Java应用运行过程中,大对象的频繁分配可能直接进入老年代,触发不必要的Full GC,严重影响系统吞吐量与响应延迟。
问题识别
通过JVM日志分析,发现GC日志中出现大量“Allocation Failure”并伴随长时间的Full GC停顿。使用-XX:+PrintGCDetails和-XX:+PrintHeapAtGC可定位对象分配行为。
优化策略
  • 调整年轻代大小,提升大对象在Eden区的分配与回收效率
  • 设置-XX:PretenureSizeThreshold=1048576(1MB),控制大对象直接进入老年代的阈值
  • 采用对象池或缓存复用大对象实例,减少频繁创建

// 示例:避免临时大数组重复创建
private static final ThreadLocal<byte[]> BUFFER = ThreadLocal.withInitial(() -> new byte[1024 * 1024]);
该代码利用ThreadLocal实现线程级缓冲区复用,降低大对象分配频率,有效缓解Full GC压力。

4.2 高并发下年轻代溢出导致老年代膨胀应对策略

在高并发场景中,频繁的对象创建会导致年轻代迅速填满,大量对象提前晋升至老年代,引发老年代空间快速膨胀,增加 Full GC 的频率与停顿时间。
JVM 参数调优
通过合理调整堆内存分区比例,可缓解年轻代溢出问题:

-XX:NewRatio=2 -XX:SurvivorRatio=8 \
-XX:+UseAdaptiveSizePolicy -XX:MaxTenuringThreshold=15
上述配置将年轻代与老年代比例设为 1:2,Eden 与 Survivor 区比例为 8:1,启用自适应策略动态调整,延长对象在年轻代的存活周期,减少过早晋升。
对象生命周期管理
避免短生命周期对象频繁逃逸到方法外部,减少临时对象对年轻代的压力。可通过对象池复用机制降低分配频率。
监控与分析
定期使用 jstat -gc 监控 Eden、Survivor 及老年代使用率变化趋势,结合 GC 日志分析对象晋升行为,及时发现异常模式。

4.3 G1调优实战:Region大小与阈值参数精细调节

在G1垃圾收集器中,合理设置Region大小对内存分配和回收效率至关重要。默认情况下,JVM会根据堆大小自动划分2048个Region,但可通过-XX:G1HeapRegionSize手动指定,建议为1MB以平衡碎片与管理开销。
关键参数配置示例

-XX:+UseG1GC \
-XX:G1HeapRegionSize=1m \
-XX:MaxGCPauseMillis=200 \
-XX:G1MixedGCCountTarget=8
上述配置将Region大小固定为1MB,控制暂停时间目标为200ms,并限制混合GC轮数不超过8次,减少并发标记周期对应用线程的影响。
调优策略对比
参数默认值推荐值作用说明
G1HeapRegionSize根据堆自动设定1m避免过大Region导致回收不均
G1MixedGCCountTarget84-8控制混合GC次数,降低停顿累积

4.4 从CMS到ZGC:低延迟场景下的无缝迁移方案

随着应用对响应时间要求的不断提升,从CMS垃圾回收器向ZGC的迁移成为降低停顿时间的关键路径。ZGC通过着色指针和读屏障实现并发整理,将GC停顿控制在10ms以内。
迁移前的评估要点
  • 确认JDK版本支持(需JDK 11+)
  • 评估堆内存大小是否超过8GB
  • 分析现有GC日志中的停顿分布
启动参数调整示例

-XX:+UseZGC
-XX:+UnlockExperimentalVMOptions
-XX:MaxGCPauseMillis=10
-XX:+ZUncommitDelay=300
上述参数启用ZGC并设定目标最大暂停时间。其中MaxGCPauseMillis为软目标,ZGC会尽量满足;ZUncommitDelay控制内存释放延迟,避免频繁申请释放。
性能对比参考
回收器最大停顿吞吐量损失
CMS200ms5-10%
ZGC10ms3-5%

第五章:程序员节极客活动特别献礼——打造属于你的GC调优手册

理解GC日志是调优的第一步
启用详细的GC日志输出,是分析JVM内存行为的基础。以下是一组常用的JVM启动参数,适用于生产环境的初步诊断:

-XX:+PrintGCApplicationStoppedTime \
-XX:+PrintGCDateStamps \
-XX:+PrintGCDetails \
-Xloggc:/path/to/gc.log \
-XX:+UseGCLogFileRotation \
-XX:NumberOfGCLogFiles=5 \
-XX:GCLogFileSize=100M
常见GC模式与应对策略
根据应用负载特征,选择合适的垃圾回收器至关重要。以下是不同场景下的推荐配置:
应用场景推荐GCJVM参数示例
低延迟服务(如交易系统)ZGC-XX:+UseZGC -XX:+UnlockExperimentalVMOptions
大内存批处理G1GC-XX:+UseG1GC -XX:MaxGCPauseMillis=200
小型Web应用Parallel GC-XX:+UseParallelGC -XX:ParallelGCThreads=4
实战案例:高频Full GC的根因排查
某电商后台在促销期间频繁出现Full GC,通过分析GC日志发现老年代增长迅速。使用 jstat -gcutil 持续监控,结合 jmap -histo 快照对比,定位到缓存未设上限导致对象堆积。解决方案如下:
  • 引入LRU缓存策略,限制最大条目数
  • 调整新生代比例:-XX:NewRatio=2
  • 增加元空间大小:-XX:MetaspaceSize=512m
Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 4.0GB NewSize = 1.0GB
具有PWM控制VSC-HVDC链路的IEEE30总线传输系统(Simulink仿真实现) 内容概要:本文构建了一个包含PWM控制VSC-HVDC链路的IEEE30节点电力传输系统,并基于Simulink平台完成了系统的建模仿真。该模型聚焦于高压直流输电(HVDC)技术在区域电网互联中的应用,采用电压源型换流器(VSC)与脉宽调制(PWM)技术实现高效、灵活的电能传输。研究重点在于分析VSC-HVDC链路在复杂多节点电网中对潮流分布、系统稳定性及电能质量的调控能力,特别关注其在区域电网互联、新能源大规模接入以及跨区域电力交换等场景下的动态响应特性与控制性能,为现代智能电网的发展提供技术支撑与仿真验证手段。; 适合人群:具备电力系统、电气工程或自动化等相关专业背景的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于研究VSC-HVDC在多节点电网(如IEEE30节点)中的建模与仿真方法;②分析PWM控制策略下HVDC链路对电网潮流分布、电压稳定性和故障穿越能力的影响;③为区域电网互联、新能源并网及智能电网调度等课题提供仿真基础和技术验证。; 阅读建议:此资源以Simulink仿真实现为核心,建议读者在掌握电力电子技术和电力系统分析基础知识的前提下,结合仿真模型深入理解VSC-HVDC的工作原理与控制策略。在学习过程中,应着重关注模型参数设置、控制环路设计及仿真结果的分析,以达到理论与实践相结合的目的。 立即下载

相关推荐

基于KDE-CDF置信带的不确定综合能源系统鲁棒调度优化研究(Matlab代码实现)

内容概要:本研究针对不确定综合能源系统中的鲁棒调度优化问题,提出一种基于核密度估计-累积分布函数(KDE-CDF)置信带的建模方法,用以精确刻画风能、光伏及负荷等不确定性因素的非正态概率分布特征。通过构建KDE-CDF模型,能够有效捕捉实际运行中新能源出力与负荷需求的波动性与随机性,并在此基础上设计鲁棒优化调度框架,提升系统在不确定性环境下的运行可靠性与经济性。该方法结合Matlab编程实现,综合考虑系统运行成本、峰谷差、碳排放等多重目标,实现多维度协调优化。研究还探讨了与智能优化算法(如粒子群算法)相结合的应用路径,增强了模型的求解效率与工程实用性,为含多种储能装置、电转气设备及碳捕集系统的复杂综合能源系统提供了科学的调度决策支持。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力的研究生、科研人员,以及从事综合能源系统规划、运行与调度工作的工程技术人员。; 使用场景及目标:①解决高比例可再生能源接入背景下综合能源系统调度中的不确定性建模难题;②提升调度方案在面对新能源强波动性时的鲁棒性与适应能力;③为融合多类型灵活性资源(如储能、电转气、碳捕集)的综合能源系统提供精细化、可落地的优化运行策略。; 阅读建议:建议读者在掌握概率统计、随机优化与电力系统运行基础知识的前提下,结合文中提供的Matlab代码进行实践操作,重点关注KDE-CDF置信带的构建流程及其在鲁棒优化模型中的嵌入机制,通过调整输入数据分布、参数设置与场景配置开展仿真对比实验,深入理解不确定性建模精度对调度决策质量的影响,进而掌握从数据驱动角度提升系统鲁棒性的关键技术路径。

jvm gc

go_gc_duration_seconds:持续时间秒 go_gc_duration_seconds_sum:gc-持续时间-秒数-总和 go_memstats_alloc_bytes:Go内存统计分配字节 go_memstats_alloc_bytes_total:Go内存统计分配字节总数 go_memstats_buck_hash_sys_bytes:用于剖析桶散列表的堆空间字节 go_memstats_frees_total:内存释放统计 go_memstats_gc_cpu_fraction:垃圾

日落东山的基地 1932

实验记录 | 如何拆分scATAC-seq数据成为单个细胞?(1、解决barcode问题)

在师兄的帮助下,我得到了师兄筛选过的细胞的barcode的数据,那么接下来我想根据这些barcode,将来源于同一个barcode的细胞的reads提取出来,这个还是一个蛮有技术含量的事情的,因为上次我有使用过perl的脚本进行提取,最后的实验结果很糟糕,故而这件事情一直搁置到现在,没有继续去做(我的脚本的编写能力还是有待于加强,可能是刚刚喝了奶茶,和老妈弟弟聊了好多闲话,很开心,觉得在某种程度上休息够了,对于工作也是一种非常快乐和积极的状态了)。 0。前期失败尝试回顾 ...

weixin_40640700的博客 1887

PromQL实现Actuator获取的JVM指标的Full GC次数监控

这个 PromQL 表达式的作用是计算最近5分钟内,jvm_gc_live_data_size_bytes 指标变化小于0.9的次数。表示 JVM 堆内存中存活的数据大小(GC 前老年代的内存使用大小)。Spring Boot 版本需要2.0.0或更高版本。

小太阳DENGJIE的博客 4140

n8n实战:动态报表生成与企业微信自动化推送

本文详细介绍了如何利用n8n实现动态报表生成与企业微信自动化推送的全流程。通过配置n8n Form触发器、智能报表生成核心逻辑以及企业微信Webhook推送,帮助企业大幅提升数据收集与报表推送效率,实现从数据录入到报表推送的全自动化处理。

weixin_29267307的博客 308

Oracle-如何修复undo坏快

undo出现坏快,导致数据库宕机,无法启动

qqqyyy0422的博客 572

Prometheus02-Springboot-Actuator相关指标-中文翻译

Prometheus常用指标

weixin_44242433的博客 1703

【OpenClaw从入门到精通】第45篇:Skill供应链安全——如何识别并避开恶意技能插件?(2026实测版)

随着OpenClaw生态爆发式增长,全球Skills总量近75万个,日均新增2.1万个,但恶意/问题插件已超600个,数十万用户受影响。本文基于奇安信威胁报告及360安全实践,拆解恶意技能的五大核心特征,提出"安装前三步法"安全审查流程,详解安全技能来源白名单与定期审计方案,并深度解析360龙虾Skill安全超市的分级认证机制。读者可掌握从技能筛选、安装审查到术后审计的全流程安全防护手段,通过实操命令与案例演示,零成本构建Skill供应链安全防线,避免遭遇私钥窃取、资产损失等安全事件。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 564

Prometheus+Grafana监控

Prometheus+Grafana监控程序

幽静净土的技术分享 3770

Open3D 基于法向量夹角的特征点提取

基于法向量夹角的特征点提取是一种在点云处理中用于识别表面变化显著区域的技术。通过计算点云中每个点的法向量与其邻域点法向量之间的夹角,可以判断点云表面的局部变化程度,并提取那些法向量变化较大的点作为特征点。这种方法特别适用于提取边缘、角点等关键几何特征。

纵马踏花向自由 1554

【AI测试干货】软件测试 - 全流程提示词完整体系

本篇教程是一套专为软件测试工程师打造的 AI 协作提示词体系。从测试计划制定、用例设计、自动化脚本开发、缺陷管理,到测试报告生成,每个环节都提供了结构化的提示词模板,帮助测试人员高效利用 AI 提升工作质量。

blues_C的博客 357

spring-prometheus的指标含义

前言 spring-boot作为一个长时间运行的服务,需要也应该能采集到一些指标来反映系统自身的运行状态。下面就spring-boot输出的一些指标分类说明。 依赖 spring-boot开启指标采集需要加入prometheus依赖。 指标处理 name type data http_server_requests_seconds summary http_server_requests_seconds_count{exception=“None”,method=“GET”,outcome=

ssehs的博客 1万+

大模型——Dify:知识库与外部知识库

摘要 Dify的知识库功能为开发者提供了动态知识管理解决方案,超越了大模型静态预训练数据的限制。知识库支持多种文档格式(如txt、pdf、docx等),通过文档分段、索引设置和检索优化机制提升LLM的响应准确性。系统提供高质量和经济两种索引模式,前者采用向量化检索技术,后者使用关键词匹配以降低成本。知识库支持元数据管理,包括自动生成的内置元数据和用户自定义元数据,便于内容分类和检索。对于高级需求,Dify还支持连接外部知识库,通过API实现跨平台数据共享和检索优化,满足企业级知识管理需求。

732

JDK 21 终极指南:解锁现代 Java 开发的无限潜能——从虚拟线程到模式匹配,全面解析 LTS 版本的革新与实战

作为 2023 年发布的长期支持(LTS)版本,JDK 21 不仅是 Java 生态的里程碑,更是企业级开发与云原生场景的“性能加速器”。它集成了 虚拟线程、模式匹配、结构化并发 等前沿特性,同时优化了垃圾回收和内存管理。本文将深入剖析 JDK 21 的核心特性,并结合实战案例,助你抢占技术高地!

hangbingbihai的博客 1570

【SpringBoot笔记44】SpringBoot多数据源配置(方式一:配置多个mapper扫描不同的包路径实现多数据源配置)

在SpringBoot应用开发中,一般情况下,都是只会配置一个数据源信息,之后整个工程都是对当前数据源进行增删改查的操作。但是,在实际开发里面,也有可能会遇到多数据源的情况,例如:当前工程中除了需要访问自己应用的数据库,还需要直接连接第三方系统的数据库进行业务处理,这种情况下,就需要进行多数据源的配置。SpringBoot考虑到了这一点,所以它是支持多数据源的配置的,下面介绍一下如何配置多数据源。

✅ Java 开发工程师 1118

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SpringBoot2.0 Actuator 监控参数说明

基于SpringBoot2.0+ Actuator metrics的监控(基于Oracle JDK9,G1) 引言 SpringBoot2在spring-boot-actuator中引入了micrometer,对1.x的metrics进行了重构,另外支持对接的监控系统也更加丰富(Atlas、Datadog、Ganglia、Graphite、Influx、JMX、NewRelic、Prometh...

jsun999的博客 6063

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

面试官:讲讲JVM吧

最近面试,发现面试官真的很喜欢问JVM。我只知道类加载和垃圾回收,这简直太jj了。

m0_64303245的博客 1110

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JVM内存分析

JVM实际内存占用超过Xmx的原因,设置Xmx的技巧:https://blog.youkuaiyun.com/begefefsef/article/details/126411842。聊聊jvm的CompressedClassSpace:https://blog.youkuaiyun.com/li123128/article/details/88928392。史上最全的JVM配置参数大全:https://blog.youkuaiyun.com/weixin_41883161/article/details/129557331。

yyc0227的博客 1319

SpringBoot-Prometheus的指标含义

prometheus监控指标含义

AG.『Feng』的博客 2972

prometheus中自带的查询指标定义解析

prometheus提供的查询指标定义系统搭建prometheus监控日志,prometheus自带的查询指标定义简单介绍PromQL 系统搭建prometheus监控日志,prometheus自带的查询指标定义 第一个输入框可以输入PromQL查询语句,点击"Execute"运行即可查看结果。 简单介绍PromQL Prometheus 自己开发的数据查询 DSL 语言,语言表现力非常丰富,内置函数很多,在日常数据可视化以及rule 告警中都会使用到它。 推荐查看文档理解Prometheus查询语法 链

今天你996了吗的博客 1万+

聊聊springboot2的micrometer

序 本文主要研究下springboot2的micrometer micrometer springboot2在spring-boot-actuator中引入了micrometer,对1.x的metrics进行了重构,另外支持对接的监控系统也更加丰富(Atlas、Datadog、Ganglia、Graphite、Influx、JMX、New...

weixin_34232744的博客 708

springboot -重定向携带数据 RedirectAttributes

springboot -重定向携带数据 RedirectAttributes 当controller层需要重定向到指定页面时,如何携带数据? 传统使用session 使用RedirectAttributes. (利用session原理) 优点: 提供了addFlashAttribute 等方法.确保数据只能被使用一次后删除 RedirectAttributes的使用 public interface RedirectAttributes extends Model { RedirectAt

NeverGiveUp 7805

JVM内存泄露故障诊断

感兴趣的朋友可以关注"猿学堂社区",系统化技术内容分享平台。或加入“猿学堂社区”微信交流群。 猿学堂师资均为一线互联网资深技术专家,提供专业、深度、体系化的技术课程,一站式技术解决方案。与技术专家线上线下深度互动、答疑解惑。在线学习笔记与课程完美结合。 本章主要是为如何诊断内存泄露问题提供一些建议方法。 如果应用程序执行时间越来越长,或者如果操作系统的执行速度越来越慢,这说明可能存在内存泄露问...

边城白衣的博客 1492

springboot管理及监控之Micrometer

返回首页 目录 Micrometer介绍: springboot集成Micrometer 使用普罗米修斯 安装普罗米修斯 安装grafana 最后: Micrometer介绍: 监控当然要可视化,仪表化。这样才能有最直观的感受。 事实上,已经有很多可视化仪表化的监控软件了,比如:AppOptics,Azure Monitor, NetflixAtlas...

做你想做的人,没有时间的限制,只要愿意,什么时候都可以start。 1256

Spring Boot 监控数据可视化图文教程 !

点击上方“Web项目聚集地”,选择“置顶”公众号重磅干货,第一时间送达作者:itmuch | 来源:IT牧场TIPS本文基于Spring Boot 2.1.4,理论支...

公众号:Java后端 2248

JVM--内存参数设置及常见错误总结

一、  JVM规范   JVM规范对Java运行时的内存划定了几块区域(详见这里),有:JVM栈(Java Virtual Machine Stacks)、堆(Heap)、方法区(Method Area)、常量池(Runtime Constant Pool)、本地方法栈(Native Method Stacks),但对各块区域的内存布局和地址空间却没有明确规定,而留给各JVM厂商发挥的空间。 ...

szzt_lingpeng的专栏 2万+
上一篇: Java程序员节技术突围指南:3个月实现薪资翻倍的学习计划
下一篇: 为什么你的Hooks总出bug?,资深架构师亲授7大避坑指南
DebugLoom
博客等级 码龄1年 176粉丝 2107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值