JFR CPU分析配置被低估了?一文看懂如何挖掘隐藏的性能黑手

第一章:JFR CPU分析配置被低估了?重新认识性能诊断的利器

Java Flight Recorder(JFR)作为JDK内置的低开销监控与诊断工具,长期以来在性能分析领域扮演着关键角色,但其CPU分析配置能力却常被开发者忽视。许多团队更倾向于依赖第三方APM工具或手动插入日志,而忽略了JFR原生提供的高精度、细粒度CPU采样与调用栈追踪功能。

启用JFR CPU采样的基本配置

要开启JFR并配置CPU分析,可通过启动参数或运行时动态设置。以下为常见的JVM启动指令:

# 启动应用并启用JFR,配置持续60秒的CPU采样
java -XX:+FlightRecorder \
     -XX:StartFlightRecording=duration=60s,filename=cpu-profile.jfr,settings=profile \
     -jar myapp.jar
其中,settings=profile 使用默认的高性能分析模板,包含方法级CPU采样、对象分配、锁争用等事件;若需自定义CPU采样频率,可创建独立的JFC(JFR Configuration)文件。

自定义CPU采样策略

通过编写JFC配置文件,可精确控制CPU采样的行为。例如:

<configuration version="2">
  <event name="jdk.MethodSample" enabled="true" period="10ms"/>
</configuration>
上述配置将方法采样周期设为每10毫秒一次,显著提升热点方法识别的精度。
  • CPU采样周期越短,数据越精细,但伴随轻微性能损耗
  • 生产环境建议使用默认profile模板,平衡开销与信息密度
  • JFR文件可通过JDK Mission Control(JMC)可视化分析
配置项推荐值说明
period10ms ~ 20ms控制方法采样频率
enabledtrue启用CPU采样事件
graph TD A[启动JFR] --> B{是否启用CPU采样?} B -->|是| C[配置MethodSample周期] B -->|否| D[跳过CPU事件] C --> E[生成JFR记录文件] E --> F[使用JMC分析热点方法]

第二章:JFR CPU分析的核心配置详解

2.1 JFR事件类型与CPU相关性的理论解析

Java Flight Recorder(JFR)通过低开销的方式捕获JVM及应用运行时的详尽数据,其中多种事件类型与CPU使用情况存在直接关联。理解这些事件的语义及其对CPU的影响,有助于深入分析性能瓶颈。
CPU相关核心事件类型
  • CPU Load:记录每个逻辑处理器的用户态与系统态负载,反映整体CPU压力。
  • Thread Execution Sample:周期性采样线程状态,定位高CPU占用的执行路径。
  • Method Profiling Sample:结合栈轨迹识别热点方法,揭示CPU密集型操作。
事件与CPU行为的映射关系

// 启用JFR并配置CPU采样间隔
-XX:StartFlightRecording=duration=60s,interval=5ms,settings=profile
上述配置启用每5毫秒一次的线程抽样,可精确捕捉短时高CPU活动。较小的interval值提高精度但增加开销,需权衡使用。
事件类型采样频率对CPU影响
CPU Load1s极低
Execution Sample可调(如5ms)中等

2.2 配置采样频率:平衡开销与数据精度的实践策略

在性能监控系统中,采样频率直接影响资源消耗与观测精度。过高的采样率会增加系统负载,而过低则可能遗漏关键指标波动。
典型采样间隔配置
  • 1s:适用于高精度实时监控场景,如金融交易系统
  • 5s:通用业务服务的推荐值,兼顾性能与开销
  • 30s+:低优先级后台任务,降低存储压力
代码示例:Prometheus 采集配置

scrape_configs:
  - job_name: 'app_metrics'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:8080']
上述配置指定每5秒拉取一次目标实例的指标数据。scrape_interval 是核心参数,需结合应用吞吐量与监控后端承载能力调整。频繁采集虽提升数据粒度,但会加剧网络、CPU及存储负担,需通过压测验证最优值。

2.3 方法采样 vs 调用栈采样:选择合适的采集模式

在性能剖析中,方法采样和调用栈采样是两种核心的数据采集方式。方法采样以固定频率监控方法的执行时间,适合快速定位热点方法。
方法采样的实现示例

// 每10ms采样一次当前正在执行的方法
Profiler.startSampling(10_000);
该代码启动基于时间间隔的方法采样,参数表示采样周期(微秒),适用于低开销的粗粒度分析。
调用栈采样的优势
调用栈采样记录完整的执行路径,能还原方法间的调用关系。它更适合复杂场景下的性能根因分析。
  • 方法采样:开销低,精度有限
  • 调用栈采样:上下文完整,资源消耗较高
维度方法采样调用栈采样
数据粒度单个方法完整调用链
性能开销低高

2.4 开启线程级别监控:捕捉上下文切换与锁竞争

在高并发系统中,线程行为直接影响性能表现。通过启用线程级别监控,可精准识别上下文切换频率与锁竞争热点。
监控上下文切换
使用 /proc/stat 中的 context switches (ctxt) 指标,结合 pidstat -w 命令观测每个线程的自愿与非自愿切换次数:

pidstat -w -p <PID> 1
频繁的非自愿切换通常意味着 CPU 资源争抢严重,需优化线程调度或降低并行度。
检测锁竞争
Java 应用可通过 jstack 和 JFR (Java Flight Recorder) 捕获监视器阻塞事件。以下代码展示如何用 synchronized 块触发竞争场景:

synchronized (lockObject) {
    // 模拟临界区操作
    Thread.sleep(100);
}
当多个线程长时间等待进入该块时,JFR 将记录“Blocked on Monitor”事件,定位锁瓶颈。
关键指标对比表
指标正常范围异常表现
每秒上下文切换< 1000> 5000 可能引发调度开销
线程阻塞时间< 10ms持续 > 100ms 表示严重锁争用

2.5 配置持续记录与触发条件:实现问题复现自动化

在复杂系统调试中,问题复现往往依赖于特定运行状态。为提升诊断效率,需配置持续日志记录,并设定精准的触发条件以自动捕获异常现场。
日志采集策略
采用分级日志机制,核心模块启用DEBUG级输出,通过环形缓冲区减少存储开销。当满足预设条件时,自动转存上下文数据。
触发条件配置示例
{
  "trigger_conditions": {
    "cpu_usage": ">90%",
    "memory_leak_threshold": "2GB",
    "log_pattern": "panic:.*"
  },
  "actions": ["dump_stack", "capture_network", "save_core"]
}
上述配置监控CPU、内存及关键错误模式,一旦匹配即执行多维度数据采集。其中 log_pattern 支持正则表达式,可灵活定义异常特征,确保问题发生瞬间完成全量信息留存。

第三章:从配置到数据:构建高效的分析流程

3.1 合理设置录制时长与旋转策略以保留关键窗口

在视频监控或日志记录系统中,合理配置录制时长与文件旋转策略是保障关键事件可追溯性的核心环节。过短的录制周期可能导致事件片段断裂,而过长则影响存储效率与检索速度。
动态调整录制窗口
建议根据业务行为特征设定基础录制时长,并结合事件触发机制延长关键时段。例如,在检测到异常行为时自动延长当前录制段5分钟,确保完整捕获上下文。
旋转策略配置示例

rotation:
  max_duration: 30m
  max_size: 1G
  keep: 7d
  on_event_extend: true
上述配置表示每30分钟生成一个新文件,最大不超过1GB,保留最近7天数据。当触发事件时,自动延长当前段录制时间,防止关键画面被截断。
  • max_duration:控制单个文件时长,平衡随机访问与管理开销
  • max_size:防止个别时段数据暴增导致磁盘突发占用
  • keep:确保回溯窗口覆盖典型故障分析周期

3.2 利用JMC可视化工具解读CPU热点方法

Java Mission Control(JMC)是分析JVM性能瓶颈的强大工具,尤其在定位CPU热点代码时表现卓越。通过其内置的Flight Recorder数据,开发者可深入观察线程执行轨迹。
CPU热点识别流程
  • 启动应用并启用JFR:添加JVM参数 -XX:+FlightRecorder
  • 生成性能记录文件:jcmd <pid> JFR.start duration=60s filename=profile.jfr
  • 在JMC中加载.jfr文件,查看“Hot Methods”视图
关键指标解读
指标含义关注阈值
CPU Time方法占用的CPU时间持续高于10%
Self Time方法自身执行时间显著高于调用栈其他节点

// 示例:可能被识别为热点的方法
public void processUserData(List users) {
    users.parallelStream() // 易引发线程竞争
         .map(this::expensiveOperation)
         .collect(Collectors.toList());
}
该代码块因使用并行流处理大量数据,可能在JMC中显示高CPU占用,需结合线程竞争与GC行为进一步分析优化空间。

3.3 结合GC与线程状态图定位隐藏性能瓶颈

在高并发系统中,性能瓶颈常隐藏于GC行为与线程状态的交互之中。通过整合JVM垃圾回收日志与线程堆栈状态图,可精准识别阻塞源头。
关键指标关联分析
将GC暂停时间与线程状态变迁对齐,发现频繁的Full GC会导致大量线程进入BLOCKED或WAITING状态。
GC事件持续时间(ms)线程阻塞比例
Young GC2512%
Full GC85078%
代码级诊断示例

// 启用详细GC日志与线程采样
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 
-XX:+UseGCLogFileRotation
-Xloggc:gc.log
-Djdk.attach.allowAttachSelf=true
上述参数启用后,结合jstack周期性采集线程快照,可绘制线程状态热力图。当发现大量线程在GC前后集中进入WAITING (on object monitor),说明对象竞争可能由内存压力引发。
GC事件触发 → 内存再分配延迟 → 线程竞争锁加剧 → 响应时间上升

第四章:实战中的高级调优技巧

4.1 在高负载服务中动态调整JFR参数避免性能干扰

在高吞吐量的Java服务中,持续开启全量Java Flight Recorder(JFR)会引入显著性能开销。为平衡监控粒度与系统负载,需动态调整采样频率和事件类型。
动态配置策略
通过JCMD命令或Management API在运行时修改JFR配置,可减少对关键路径的影响。典型做法包括降低对象分配采样率、禁用低优先级事件(如`jdk.MethodSampling`)。

jcmd <pid> JFR.configure duration=60s settings=profile
该命令将应用“profile”预设模板,仅启用高频关键事件(如GC、线程阻塞),将默认采样间隔从10ms延长至50ms,显著降低CPU占用。
自适应调优建议
  • 在流量高峰时段关闭方法采样和堆快照
  • 使用异步GC日志结合轻量级JFR事件(如`jdk.GCPhasePause`)替代完整跟踪
  • 通过Prometheus导出JFR数据,实现闭环调控

4.2 通过自定义事件标记关键业务路径进行精准归因

在复杂分布式系统中,精准追踪用户行为与业务转化路径是性能优化和决策支持的核心。通过注入自定义事件,可明确标识关键业务节点,实现链路级归因分析。
事件埋点示例

// 在用户完成支付时触发自定义事件
analytics.track('payment_completed', {
  orderId: '123456',
  amount: 99.9,
  currency: 'CNY',
  productId: 'P7890'
});
该代码片段在用户支付成功后发送结构化事件,包含订单金额、ID等上下文信息,便于后续归因分析。
事件属性分类
  • 行为类型:标识操作性质,如注册、下单、支付
  • 上下文参数:携带业务实体数据,如订单号、商品ID
  • 时间戳:确保事件序列可排序,还原用户行为流
结合分布式追踪系统,这些事件可关联至完整调用链,实现从用户动作到服务处理的端到端归因能力。

4.3 多实例对比分析识别异常行为模式

在分布式系统中,多实例对比分析是识别异常行为的有效手段。通过横向比较多个运行实例的指标数据,可快速定位偏离正常模式的节点。
关键监控指标对比
通常关注CPU使用率、内存占用、请求延迟和QPS等核心指标。以下为实例间指标差异检测的简化逻辑:
func detectAnomaly(instances []Instance) []string {
    var anomalies []string
    avgCPU := calculateAvgCPU(instances)
    for _, inst := range instances {
        // 当实例CPU使用率超过均值2倍标准差时标记为异常
        if inst.CPU > avgCPU*2.0 {
            anomalies = append(anomalies, inst.ID)
        }
    }
    return anomalies
}
该函数通过计算所有实例的平均CPU使用率,并识别显著高于平均水平的实例,实现初步异常检测。
异常判定策略
  • 基于统计学的Z-score方法判定偏离程度
  • 采用滑动窗口机制动态更新基线
  • 结合业务周期调整阈值,避免误报
通过持续对比与自适应阈值机制,系统能更精准地识别真实异常行为。

4.4 与APM系统集成实现全天候CPU行为追踪

在现代分布式架构中,将应用性能监控(APM)系统与底层资源指标采集深度融合,是实现精细化性能治理的关键。通过在应用侧嵌入轻量级探针,可实时捕获JVM或进程级CPU使用情况,并上报至APM中心。
数据同步机制
采用异步非阻塞方式将CPU采样数据推送至APM服务端,避免对主业务线程造成干扰。以Java Agent为例,利用字节码增强技术在关键方法插入监控逻辑:

public class CpuMonitorTransformer implements ClassFileTransformer {
    @Override
    public byte[] transform(ClassLoader loader, String className,
                           Class<?> classType, ProtectionDomain domain,
                           byte[] classBuffer) throws IllegalClassFormatException {
        // 增强目标类,注入CPU时间采样逻辑
        return InstrumentationHelper.weaveCpuSampling(classBuffer);
    }
}
上述代码注册一个类文件转换器,在类加载时动态织入CPU采样指令,确保低开销的同时实现全覆盖追踪。
指标聚合结构
上报数据经APM网关汇聚后形成多维视图:
维度说明
线程粒度定位高CPU消耗线程栈
时间序列构建分钟级趋势图
服务拓扑关联上下游调用链路

第五章:挖掘性能黑手之后:通往极致优化之路

识别资源瓶颈的典型模式
在高并发场景下,数据库连接池耗尽是常见问题。通过监控工具定位后,应优先调整连接池配置并引入连接复用机制。例如,在 Go 应用中使用以下设置可有效缓解:

db.SetMaxOpenConns(100)
db.SetMaxIdleConns(10)
db.SetConnMaxLifetime(time.Hour)
优化缓存策略提升响应效率
合理利用 Redis 作为二级缓存,能显著降低数据库压力。关键在于设置合适的过期策略与缓存穿透防护:
  • 对热点数据启用永不过期(逻辑过期)机制
  • 使用布隆过滤器拦截无效查询请求
  • 采用 LRU 策略自动淘汰冷数据
异步处理解耦系统依赖
将非核心流程如日志记录、通知发送迁移至消息队列,可大幅缩短主链路响应时间。以下是 Kafka 生产者配置建议:
参数推荐值说明
acks1平衡吞吐与可靠性
linger.ms20批量发送延迟控制
max.in.flight.requests.per.connection5提升吞吐同时避免乱序
前端资源加载优化实践

资源加载顺序建议:

  1. 优先加载关键 CSS 并内联至 HTML
  2. 异步加载 JavaScript 文件
  3. 使用 Intersection Observer 实现图片懒加载
Java如何使用JFR(Java Flight Recorder)飞行记录分析代码瓶颈 Java JFR的全称是Java Flight Recorder。这是Java开发工具包(JDK)中的一个功能强大的性能分析和故障排查工具。它需要配合JMC(JDK Mission Control)工具来分析收集的记录数据。 阅读详情

相关推荐

Java开发者必备:JFR实战指南——从开启到分析性能瓶颈的全流程

本文为Java开发者提供了一份详尽的Java Flight Recorder实战指南。从JDK环境准备、JFR的持续与固定时长两种数据采集策略,到深入解析JFR事件模型,并指导如何使用JMC和命令行工具分析性能瓶颈。文章通过真实案例,系统性地阐述了如何利用JFR定位CPU热点、锁竞争、内存压力及I/O等待等核心性能问题,助力开发者实现从数据采集到优化落地的全流程性能调优。

lstm7chronicler的博客 228

JFR性能数据不会看?,教你5步快速诊断Java应用卡顿

快速掌握JFR日志的分析技巧,5步定位Java应用卡顿根源。适用于生产环境性能瓶颈排查,结合时间线分析、GC事件与线程阻塞识别关键问题。方法简单高效,大幅提升诊断效率,值得收藏。

PixelShoal的博客 1099

通过 JFR 统计 Java 进程一段时间内的 CPU 利用率

想要统计一个 Java 应用这一段时间的 CPU 使用率,除了借助 Linux 系统各项命令外,可以借助 async-profiler + JFR 获取 JVM 进程用户态,内核态,环境总使用率的统计。

wu_weijie的博客 1753

JFR日志深度解析(从入门到专家级分析技巧)

掌握JFR日志的分析方法,快速定位Java应用性能瓶颈。涵盖JVM监控、事件采集、关键指标解读及实战分析技巧,适用于高并发、低延迟场景问题排查。深入浅出,从基础到高级诊断一应俱全,值得收藏。

VarFun的博客 1131

SpringBoot+Vue+Mysql社区医院信息平台(源码+文档)

SpringBoot+Vue+Mysql学生宿舍信息管理系统 WEB端软件项目(源码+文档) 项目包含:①完整源码(后端+管理后台+用户前台);②数据库脚本文件;③万字论文文档;④开题报告;⑤答辩PPT;⑥项目运行视频教程。 项目架构: B/S 架构、MVC 分层设计 技术栈: Java、MySQL、SpringBoot、MyBatis-Plus、Token 权限校验、管理后台 Vue+ElementUI+ECharts、用户前台 Layui+jQuery、Maven 构建。 一、角色设计 学生用户: 注册登录、浏览宿舍信息、查询宿舍安排、在线报修、缴费查询、失物招领、桶装水预订、评论交流、收藏等。 商家用户: 注册登录、桶装水品牌与商品信息维护、预订订单查看与处理。 维修人员: 注册登录、查看待处理报修、接单维修、填写报修处理结果与进度反馈。 管理员: 学生管理、班级管理、宿舍信息管理、宿舍安排管理、报修处理管理、缴费信息管理、卫生检查与文明宿舍管理、失物招领管理、桶装水与商家管理、维修人员管理、公告资讯与轮播图管理等。 二、前台功能模块(学生端) 1. 首页展示:轮播图、宿舍公告、最新动态推荐、常用服务快速入口 2. 宿舍信息模块:宿舍列表、楼栋与房间条件筛选、宿舍详情查看、我的宿舍安排查询 3. 在线报修模块:在线提交宿舍设施报修申请、上传故障描述、查看报修进度与维修处理结果 4. 缴费模块:水电等缴费记录查询、缴费状态查看 5. 卫生检查与文明宿舍:宿舍卫生检查结果公示、文明宿舍展示 6. 失物招领模块:失物信息发布、招领信息发布、详情查看、评论互动 7. 桶装水预订:桶装水品牌与商品浏览、在线预订、我的预订记录查询 8. 假期留宿:假期留校申请提交、申请记录查询 9. 评论与收藏:信息评论、查看他人评论、评论回复互动、收藏感兴趣的内容 10. 个人中心...

YOLOv8作物病害检测实战源码

这是一套基于YOLOv8n的农田病虫害目标检测系统,对叶片照片做目标检测,识别健康叶片、褐斑病、白粉病、锈病四类,并给出对应防治建议。全流程纯CPU可跑,配套交付完整Python源码、9章实战教程(md/html/pdf三种格式)、100张自造样本及YOLO标签、训练曲线与混淆矩阵截图、Tkinter界面和答辩PPT。 系统围绕五项功能展开:同一套推理逻辑覆盖图像、视频、摄像头三种来源;图形界面选文件即检测,画面叠彩色框标注病名与置信度,右侧面板同步给出症状与防治措施;检测记录自动写入CSV,统计页一键生成四类病害占比饼图;训练结束自动产出损失与精度曲线;内置防治建议文案库,检测命中即回填面板。 选型用YOLOv8n nano档,参数量约320万、权重约6.2MB,CPU单帧几十毫秒,小样本训练5到8分钟完成。数据由data_gen.py程序化绘制100张叶片图,固定随机种子,重跑分布一致,不依赖公开数据集。依赖全部锁版本,教程第7章整理了19条真实报错及排查方法,第8章给出换模型档、换PlantVillage数据集的迁移路径。 适合做计算机视觉方向课程设计或毕业设计的学生,也适合智慧农业方向想了解检测模型如何落进业务面板的学习者。不需要GPU,不需要系统学过目标检测,教程第3章会按需补齐原理。 使用时先pip install -r requirements.txt装好依赖,download_data.py下载预训练权重,data_gen.py生成样本后train.py训练,完成后用main.py infer批量检测或main.py gui启动界面。

使用JFR/JMC(Java Flight Recorder/Mission Control)进行深度性能分析

除了 JVM 提供的内置事件之外,我们还可以自定义 JFR 事件来收集应用程序特定的性能数据。

weixin_41455464的博客 1483

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)

数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.youkuaiyun.com/mtl1994

使用 JFR 定位 Caffeine 同步缓存中的缺陷

最近,某个 spring-boot + cloud 微服务并且基于 web-mvc 的同步微服务(也加入了异步响应式依赖 web-flux 用于局部敏感接口的非阻塞优化)的某一个实例出现问题,所有的 http 请求均超时。其他实例没有(剽窃可耻)出这个问题,这个问题实例触发了 k8s 健康检查失败,被重启。由于这个事件发生在周末的时候,我们只能事后分析。事后分析的来源是 JFR,针对线上每个 JVM 进程,我们的启动配置是:其中disk=true。

Huangjiazhen711的博客 1139

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

java 线上调优,通过一个线上调优例子了解JMC 与 Event 结构与详细配置

查看 JFR 事件的工具 - JMC (Java Mission Control)首先打开 jmc,我们通过 “文件” -> “打开文件” 来打开一个 jfr 文件。 由于 JFR 文件里面的数据要全部导入内存,而且 JMC 需要给这些数据做很多索引以及报表,最后的内存占用大概是原始文件的4~6倍左右。如果你的系统内存不足, JMC 也会提示你只截取一部分查看。最好你在 dump JFR 文...

weixin_42304279的博客 525

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

[Java故障排除指南- JDK11-学习笔记]-2-诊断工具JMC和JFR使用

2 诊断工具 2.1 诊断工具概述 Java Development Kit (JDK) 提供特定于各种操作系统的诊断工具和故障排除工具。还可以使用 JDK 提供的 API 开发自定义诊断工具 本节中描述的大多数命令行实用程序要么包含在 JDK 中,要么包含在本机操作系统工具和实用程序中。 尽管 JDK 命令行实用程序包含在 JDK 下载中,但重要的是要考虑到它们可用于诊断问题并监视使用 Java 运行时环境 (JRE) 部署的应用程序。 通常,诊断工具和选项使用各种机制来获取它们报告的信息。这些机制特定于

宋小生-中间件 2799

高校技术转移办公室人员如何系统化管理科技成果信息?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

软件破解逆向安全(一)初识内存地址和偏移

工具:CE 内存:数字->存访在电脑中->内存 实例:如何修改植物大战僵尸阳光 内存搜索最核心:过滤数据 先用CE加载植物大战僵尸,如下图 我们可以看到目前我们的阳光数是50,我们尝试在ce里搜索精确数值,4 byte是int整数的表示。 我们发现有很多数据,尝试收集一个阳光变成75再次搜索: 我们发现就一个了,这时我们可以双击Value随便修改阳光的数值了。 这里我们说一下动态和静态地址 动态地址:临时用于存放数据的地址,黑色。特征:重新启动游戏地..

weixin_43781139的博客 2592

开车了,JMC坐稳 (jfr),看完记得收藏!

今天我们要开的车是,江铃汽车。全称Jiangling Motors Corporation,简称JMC。 一车在手,吃喝不愁。车作为男人的第二个老婆,拥有一辆JMC是所有成功男人的梦想。打开小小的车窗,任嘶吼的狂风揉捏自己的面庞,是一种让人无比享受的存在。 列车驶向何处,前方又是何方,全在掌舵者一念之间。 程序员掌舵,当然与众不同。我们今天的列车,就是jmc监控工具。 呸,撞车了。 与JMC撞车的...

weixin_46898270的博客 2467

Anaconda/Miniconda的删除和安装

要在 MacBook 上删除 Anaconda 或 Miniconda,并重新安装它,您可以按照以下步骤进行操作。

qq_27390023的博客 3027

运行java飞行记录器JFR(java flight recorder)

JFR 上面讲到的工具都是作为快速的查看诊断工具的。如果要深入分析问题,可以选择使用内置的Java飞行记录器:Java Mission Control。   转储JFR需要三步: 1. 创建一个包含了你自己配置的JFR模板文件。运行jmc, 然后Window-&gt;Flight Recording Template Manage菜单。准备好档案后,就可以导出文件,并移动到要排查问题的环境...

weixin_34378045的博客 1102

FPGA开发者必看:手把手教你用Xilinx ERNIC IP实现RoCE v2网络加速(附PG332文档解读)

本文详细解析了Xilinx ERNIC IP在FPGA平台上实现RoCE v2网络加速的全流程,包括架构设计、Vivado工程配置、驱动开发与性能调优。通过PG332技术文档的实践指导,帮助开发者快速构建低延迟、高性能的网络加速方案,适用于数据中心和边缘计算场景。

weixin_29168813的博客 669

ATE Pin Electronics电路学习总结

PinElectronics(PE)是ATE测试机的核心模拟前端电路,负责ATE与芯片间的信号转换与交互。主要包含四大功能模块:Driver实现逻辑信号到模拟电平的转换(VIH/VIL可编程);Receiver对DUT输出进行采样比较(VOH/VOL判定);ActiveLoad施加可编程电流负载;PPMU进行精密电压/电流测量。PE的性能直接影响功能测试和直流参数测试的精度,需定期校准维护。关键参数包括:Driver电压精度(±5mV)、Receiver比较精度(±10-50mV)、PPMU测量精度(±1-

歌颂苦难的行为是无耻的; 467

Java飞行记录器 JRockit Flight Recorder JFR诊断JVM的历史性能和操作

需要展开子树,复制堆栈跟踪,就可以查看到代码调用链,看到自己的业务代码,从而定位到最耗时的代码位置:

编程的本质是数学问题 4469

Winform从入门到精通(1)——Label(史上最全)

本篇文章是对专栏《winform控件从入门到精通》的详细介绍

qq_34059233的博客 4万+
上一篇: 从JVM到原生:Quarkus镜像构建全流程拆解(含性能对比数据)
下一篇: 如何实现模块文档秒级生成?:基于AST解析的实践方案
quickcode
博客等级 码龄19年 146粉丝 1996原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值