当前位置: 首页 > news >正文

JVM 常用参数速查手册

所有参数基于 HotSpot JVM。参数后标注版本状态:[JDK8]仅 JDK 8 可用,[JDK17+]需要 JDK 17 及以上,[已移除]表示在后续版本中被删除。


LTS 版本关键差异速查

Java 的 LTS(长期支持)版本是8、11、17、21、25。跨版本升级时,JVM 参数有实质性变化的集中在以下几个点:

参数行为差异一览

差异点JDK 8JDK 11JDK 17JDK 21JDK 25
默认 GCParallel GCG1G1G1G1
CMS 收集器✅ 可用⚠️ 已废弃❌ 已移除
ZGC实验性✅ 生产可用分代 ZGC✅ 分代为唯一模式(非分代已移除)
Shenandoah✅ 生产可用
GC 日志格式-Xloggc旧格式-Xlog统一格式-Xlog-Xlog-Xlog
偏向锁默认开启默认开启默认关闭已移除已移除
强封装 JDK 内部不封装不封装强封装--add-opens必须)同 17同 17
Metaspace刚替换永久代稳定稳定稳定稳定
Flight Recorder仅 Oracle JDK✅ 免费开放
字符串去重默认关闭默认关闭默认关闭默认开启默认开启
虚拟线程正式发布
NMT(Native Memory Tracking)需显式开启需显式开启需显式开启支持detail级别同 21

已废弃 / 已移除参数对照

升级 JDK 时,启动脚本里的这些参数必须改掉,否则 JVM 会报错或静默忽略。

旧参数状态替代方案
-XX:PermSize=NJDK ≤ 7 可用;JDK 8 起忽略(有警告)-XX:MetaspaceSize=N
-XX:MaxPermSize=NJDK ≤ 7 可用;JDK 8 起忽略(有警告)-XX:MaxMetaspaceSize=N
-XX:+UseConcMarkSweepGCJDK 9 废弃,JDK 14 移除-XX:+UseG1GC-XX:+UseZGC
-XX:+UseParNewGCJDK 9 废弃,JDK 14 移除由 G1/ZGC 自动处理
-XX:+CMSIncrementalModeJDK 9 废弃,JDK 14 移除无直接替代
-XX:+UseBiasedLockingJDK 15 废弃,JDK 18+ 默认关闭无需替代,JVM 自动选择锁策略
-XX:BiasedLockingStartupDelayJDK 15 废弃,JDK 18+ 默认关闭无需替代
-XX:+PrintGCDetailsJDK 9 废弃-Xlog:gc*
-XX:+PrintGCDateStampsJDK 9 废弃-Xlog:gc*:...time
-Xloggc:fileJDK 9 废弃-Xlog:gc*:file=path
-XX:+PrintTenuringDistributionJDK 9 废弃-Xlog:gc+age=trace
-XX:+PrintReferenceGCJDK 9 废弃-Xlog:gc+ref=debug
-XX:+PrintAdaptiveSizePolicyJDK 9 废弃-Xlog:gc+ergo*=trace
-XX:+PrintHeapAtGCJDK 9 废弃-Xlog:gc+heap=debug
-XX:MaxGCMinorPauseMillisJDK 23 废弃-XX:MaxGCPauseMillis

从 JDK 8 升级到 JDK 17 的参数改造清单

这是最常见的升级路径,需要改的东西最多:

# ═══ 必须改 ═══ # 1. GC 收集器:CMS 已移除,换 G1 或 ZGC - -XX:+UseConcMarkSweepGC -XX:+UseParNewGC + -XX:+UseG1GC # 2. GC 日志:旧格式全部换掉 - -XX:+PrintGCDetails - -XX:+PrintGCDateStamps - -Xloggc:/var/log/app/gc.log + -Xlog:gc*,gc+age=trace:file=/var/log/app/gc.log:time,uptime,level,tags:filecount=5,filesize=10m # 3. 永久代参数:删掉 - -XX:PermSize=256m - -XX:MaxPermSize=512m + -XX:MetaspaceSize=256m + -XX:MaxMetaspaceSize=512m # 4. 偏向锁:JDK 17 已默认关闭,显式开启反而有警告 - -XX:+UseBiasedLocking # ↑ 直接删除此行,不需要替代 # 5. 强封装:如果用反射访问 JDK 内部类,必须加 --add-opens + --add-opens java.base/java.lang=ALL-UNNAMED + --add-opens java.base/java.util=ALL-UNNAMED # ═══ 建议改 ═══ # 6. Flight Recorder 现在免费了,可以加上 + -XX:StartFlightRecording=duration=60s,filename=/tmp/jfr.jfr # 7. G1 成为默认 GC,可以不显式指定(但建议还是写上,明确意图)

从 JDK 17 升级到 JDK 21 的参数改造

相对平滑,主要变化:

# ═══ 建议改 ═══ # 1. 分代 ZGC 大幅提升,低延迟场景强烈推荐 - -XX:+UseZGC + -XX:+UseZGC -XX:+ZGenerational # 2. 虚拟线程正式发布(不需要 JVM 参数,但需要 JDK 21) # 代码层面:使用 Executors.newVirtualThreadPerTaskExecutor() # 3. 字符串去重默认开启(减少内存,一般不用管) # ═══ 注意 ═══ # 4. 偏向锁参数已被移除,如果还在用会报错 - -XX:+UseBiasedLocking # ↑ 必须删除(JDK 18+ 默认关闭,JDK 19+ 参数已移除) # 5. G1 默认 Region 大小算法优化,通常不需要手动设了 # 如果之前手动设了 G1HeapRegionSize,可以试试去掉让 JVM 自己选

容器环境专属参数(Docker / K8s)

这是最容易踩坑的地方。JVM 在容器里看到的可能不是容器的资源限制,而是宿主机的。

容器感知(Container Awareness)

参数说明默认值建议
-XX:+UseContainerSupport启用容器感知(JVM 读取 cgroup 限制)JDK 10+默认开启JDK 8u191+ 才有此参数;8u191 之前必须手动升级 JDK
-XX:-UseContainerSupport禁用容器感知几乎不要关,除非你确定容器限制不合理
-XX:MaxRAMPercentage=N堆占容器可用内存的百分比25%(JDK 8~21)/50%(JDK 22+)专用容器设75;共享容器设50~60
-XX:InitialRAMPercentage=N初始堆占容器可用内存的百分比1.5625%通常不用设(配合-Xms
-XX:MinRAMPercentage=N小内存时的最小堆百分比50%通常不用改

为什么这很重要 — 不设置的后果

场景:Docker 容器限制 4GB 内存,宿主机 64GB JDK 8u190(无容器感知): JVM 看到 64GB → -Xmx 默认 16GB → 容器被 OOM Killed 💀 JDK 8u191+(有容器感知): JVM 看到 4GB → -Xmx 默认 1GB(25%)→ 正常运行但堆太小 正确配置: -XX:+UseContainerSupport -XX:MaxRAMPercentage=75 → JVM 看到 4GB → -Xmx 约 3GB → 合理 ✅

容器里的 CPU 核数

场景:容器限制 2 核,宿主机 32 核 JDK 默认行为: Runtime.getRuntime().availableProcessors() → 32(宿主机核数) ParallelGCThreads → 32 → 创建 32 个 GC 线程 → 浪费内存 + 上下文切换 解决方案: 1. JDK 10+:自动读取 cgroup CPU 限制 ✅ 2. JDK 8:手动指定 -XX:ParallelGCThreads=2 -XX:ConcGCThreads=1 3. 或者设置 -XX:ActiveProcessorCount=2(JDK 8u191+)
参数说明建议
-XX:ActiveProcessorCount=N覆盖 JVM 检测到的 CPU 核数设为容器实际的 CPU limit;JDK 10+ 通常自动正确

容器环境推荐配置

# Docker 容器通用模板(JDK 17+)java\-XX:+UseContainerSupport\# 启用容器感知-XX:MaxRAMPercentage=75\# 堆占容器内存的 75%-XX:InitialRAMPercentage=75\# 初始堆也一样(避免扩容)-XX:+UseG1GC\-XX:MaxGCPauseMillis=100\-XX:+HeapDumpOnOutOfMemoryError\-XX:HeapDumpPath=/tmp/heapdump.hprof\-Xlog:gc*:file=/var/log/app/gc.log:time,uptime:filecount=3,filesize=10m\-jarmyapp.jar

注意MaxRAMPercentage=75意味着堆占 75%,剩下 25% 给堆外内存。容器内存越紧张,这个值越要精确计算。


一、堆内存参数

参数说明默认值建议
-Xms初始堆大小物理内存的 1/64设为与-Xmx相同,避免运行时动态扩容的开销和 STW
-Xmx最大堆大小物理内存的 1/4根据服务器可用内存计算(见 tuning.md)
-Xmn新生代大小堆的约 1/3通常为堆的 1/3~1/2;设太大会挤压老年代
-Xss每个线程的栈大小1MB (64位)256k~512k 通常够用;线程多时减小可节省内存

要点

  • -Xms-Xmx设成一样是最重要的一条规则 — 消除扩容带来的停顿
  • -Xmn-XX:NewRatio二选一,不要同时设

二、分代与晋升参数

参数说明默认值建议
-XX:NewRatio老年代:新生代的比例2(即老年代占 2/3)一般不用改;对象创建密集可调为 1
-XX:SurvivorRatioEden:每个 Survivor 的比例8(即 8:1:1)Survivor 放不小可调小(如 6),让 Survivor 更大
-XX:MaxTenuringThreshold对象在 Survivor 中经历 GC 的次数上限15默认 15 通常够用;频繁晋升到老年代可适当调大
-XX:PretenureSizeThreshold超过此大小的对象直接进老年代0(不启用)仅 Serial/ParNew 生效;G1 用-XX:G1HeapRegionSize间接控制
-XX:+DisableExplicitGC禁用System.gc()不禁用建议加上,防止代码或第三方库乱调 GC
-XX:+AlwaysPreTouch启动时预分配并触碰所有堆内存页关闭生产环境建议开启,避免运行时分配内存页的延迟

Survivor 放不下的判断

# 观察 GC 日志中是否有: "Desired survivor size XXX bytes, new threshold N" # 如果 threshold 被自动调低了(如降到 3),说明 Survivor 太小 # 解决:减小 SurvivorRatio(如从 8 改为 6),增大 Survivor 空间

三、元空间参数

参数说明默认值建议
-XX:MetaspaceSize元空间初始大小约 20MB设为 256m,避免启动时频繁触发 GC 扩容
-XX:MaxMetaspaceSize元空间最大大小无上限建议设一个上限(如 512m),防止无限增长

什么时候该关注

  • Spring Boot + 大量 AOP 代理 → 动态生成很多类
  • 热部署 / 频繁重新加载 → 类卸载不及时
  • OOM: Metaspace → 先排查是否有类加载泄漏,再调大上限

JDK ≤ 7 用户注意:永久代参数-XX:PermSize/-XX:MaxPermSize从 JDK 8 起已被忽略(启动时会打印警告)。
升级到 JDK 8+ 后应替换为上方表格中的-XX:MetaspaceSize/-XX:MaxMetaspaceSize
完整的新旧参数对照见 已废弃 / 已移除参数对照。


四、GC 收集器选择参数

参数收集器适用场景JDK 要求
-XX:+UseSerialGCSerial + Serial Old单核 / 嵌入式 / 内存 < 100MB所有版本
-XX:+UseParallelGCParallel Scavenge + Parallel Old高吞吐、批处理、不在乎延迟所有版本(JDK 8 默认)
-XX:+UseParNewGCParNew(配合 CMS)[JDK8] CMS 的新生代搭档JDK 8
-XX:+UseConcMarkSweepGCCMS[JDK8] 低延迟JDK 8(JDK 14 移除)
-XX:+UseG1GCG1通用首选,堆 ≤ 16GJDK 7+(JDK 9+ 默认)
-XX:+UseZGCZGC大堆 + 极低延迟JDK 15+ 正式发布,JDK 17+ 生产推荐
-XX:+UseShenandoahGCShenandoah低延迟,类似 ZGCJDK 15+(OpenJDK)

选择决策

JDK 版本? ├── JDK ≤ 8 → 延迟敏感? │ ├── 是 → -XX:+UseConcMarkSweepGC(CMS) │ └── 否 → -XX:+UseParallelGC(默认) ├── JDK 9~14 → -XX:+UseG1GC(默认,通用最优) └── JDK 15+ → 延迟要求? ├── 极低(< 1ms)→ -XX:+UseZGC ├── 中等(< 200ms)→ -XX:+UseG1GC(默认) └── 不在乎 → -XX:+UseParallelGC

五、GC 行为调优参数

通用参数

参数说明建议
-XX:ParallelGCThreads=NGC 并行线程数(STW 阶段)默认 CPU 核数(≤8 时);8 核以上:8 + (N-8)*5/8
-XX:ConcGCThreads=NGC 并发线程数(不停顿阶段)默认 ParallelGCThreads 的 1/4
-XX:GCTimeRatio=N吞吐量目标:应用时间 / GC 时间 ≥ N默认 99(即 GC 时间 ≤ 1%)

G1 专用参数

参数说明默认值建议
-XX:MaxGCPauseMillis=N目标最大 GC 停顿时间200ms根据业务 SLA 设定,如 Web 服务 100~200ms
-XX:G1HeapRegionSize=NRegion 大小自动(1~32MB)堆大时可设为 8m 或 16m
-XX:InitiatingHeapOccupancyPercent=N堆占用率达到多少时触发并发标记45%默认 45%;频繁 Full GC 可调低(如 35)
-XX:G1ReservePercent=N保留多少空间防止 to-space exhausted10%默认 10%;大对象多可调高
-XX:G1MixedGCCountTarget=NMixed GC 的轮次目标8调大可以分摊每轮的回收量
-XX:G1HeapWastePercent=N老年代可回收垃圾低于此比例时停止 Mixed GC5%默认 5%;设低可以继续回收更多垃圾

Parallel GC 专用参数

参数说明建议
-XX:MaxGCPauseMillis=N目标最大停顿时间Parallel GC 会自适应调整
-XX:MaxGCMinorPauseMillis=N目标 Minor GC 最大停顿同上
-XX:GCTimeRatio=N吞吐量比例目标默认 99,批处理可调到 19(GC ≤ 5%)
-XX:+UseAdaptiveSizePolicy自适应调节新生代大小默认开启,建议保持

ZGC 专用参数

参数说明默认值建议
-XX:MaxGCPauseMillis=N目标停顿时间1msZGC 默认就是亚毫秒,通常不用调
-XX:SoftMaxHeapSize=N软性堆上限(ZGC 会尽量不超)设成接近-Xmx,帮助 ZGC 更积极地回收
-XX:ZCollectionInterval=N固定 GC 间隔(秒),0=不固定0需要定期回收可设(如 120)
-XX:+ZGenerational启用分代 ZGC(吞吐+延迟双优)关闭(JDK 21)/默认开启(JDK 23+)JDK 21 低延迟场景强烈推荐(JEP 439,生产特性)

六、GC 日志参数

JDK 9+ 统一日志格式(推荐)

# 基础配置:GC 日志输出到文件,滚动保留 5 个文件,每个 10MB-Xlog:gc*:file=/var/log/app/gc.log:time,uptime,level,tags:filecount=5,filesize=10m# 详细配置:包含 GC、堆、元空间信息-Xlog:gc*,gc+heap=debug:file=/var/log/app/gc.log:time,uptime,level,tags:filecount=5,filesize=20m# 打印安全点信息(排查 STW 延迟)-Xlog:gc+safepoint=info:file=/var/log/app/gc.log

JDK 8 格式(旧)

# 基础配置-XX:+PrintGCDetails-XX:+PrintGCDateStamps-Xloggc:/var/log/app/gc.log# 详细配置-XX:+PrintGCDetails-XX:+PrintGCDateStamps-XX:+PrintTenuringDistribution# 打印对象晋升年龄分布-XX:+PrintHeapAtGC# GC 前后堆信息-XX:+PrintReferenceGC# 引用处理耗时-Xloggc:/var/log/app/gc.log# 大堆时打印堆区域变化(G1)-XX:+PrintAdaptiveSizePolicy

日志中看什么

# JDK 9+ 格式示例 [2024-01-15T10:30:05.123+0800][12.345s][info][gc] GC(0) Pause Young (Normal) (G1 Evacuation Pause) 209M->45M(2048M) 8.234ms ↑ ↑ ↑ ↑ ↑ 第几次GC 类型 触发原因 前→后 耗时 关键指标: - 频率:Young GC 几分钟一次正常,Full GC 几小时一次以上就有问题 - 耗时:Young GC < 50ms 正常,Full GC < 200ms 可接受 - 回收后使用率:GC 后仍 > 80% → 堆不够或有泄漏

七、引用类型与 GC 行为

Java 有四种引用类型,GC 对它们的回收策略完全不同。理解这个对写缓存、避免 ThreadLocal 泄漏至关重要。

引用类型创建方式GC 行为典型用途
强引用Object o = new Object()只要强引用存在,永远不回收普通变量,绝大多数场景
软引用SoftReference<Object> sr = new SoftReference<>(obj)内存不足时才回收缓存(内存紧张时自动清理)
弱引用WeakReference<Object> wr = new WeakReference<>(obj)下次 GC 就回收(不管内存够不够)ThreadLocalWeakHashMap
虚引用PhantomReference<Object> pr = new PhantomReference<>(obj, queue)随时可回收,无法通过引用获取对象跟踪对象被回收的时机(资源清理)

GC 回收优先级

强引用 → 永不回收(OOM 也不回收) ↓ 失去强引用后 软引用 → 内存不足时回收(GC 会尽量保留) ↓ 失去软引用后 弱引用 → 下次 GC 立刻回收 ↓ 失去弱引用后 虚引用 → 入队通知,对象已死

实际影响

// 1. 软引用做缓存 — 内存紧张时自动清理Map<String,SoftReference<byte[]>>cache=newHashMap<>();cache.put("key",newSoftReference<>(newbyte[1024*1024]));// 2. ThreadLocal 用弱引用 — 但 key 弱引用不意味着 value 也弱!// ThreadLocalMap 的 key 是弱引用,value 是强引用// → 线程不销毁时 value 永远不会被回收 → 内存泄漏!ThreadLocal<Session>session=ThreadLocal.withInitial(Session::new);// 必须在使用完后显式 remove()session.remove();// 3. WeakHashMap — key 被回收时整个 entry 自动移除Map<Key,Value>map=newWeakHashMap<>();

GC 调优相关

  • 大量软引用对象 → Minor GC 时需要额外判断"内存是否充足",可能拖慢 GC
  • -XX:SoftRefLRUPolicyMSPerMB=N:控制软引用的存活时间(默认 1000ms/MB 空闲堆),调小可以更积极地回收软引用

八、JIT 编译参数

参数说明建议
-XX:+TieredCompilation启用分层编译(C1 + C2)JDK 8+ 默认开启,不要关
-XX:CompileThreshold=N方法编译阈值(调用多少次触发 JIT)默认 10000(分层编译下自动调节,一般不改)
-XX:ReservedCodeCacheSize=NJIT 编译后的机器码缓存大小默认 240MB;大型应用可调到 512m
-XX:+PrintCompilation打印 JIT 编译事件排查编译问题时临时开启
-XX:-UseCompilation禁用 JIT(纯解释执行)永远不要在生产环境用,仅供调试

九、直接内存参数

参数说明默认值建议
-XX:MaxDirectMemorySize=N直接内存最大大小等于-Xmx不用 NIO 可设小(如 256m);NIO 密集按需调大

什么时候关注

  • Netty / NIO 应用 → 直接内存用量大
  • OOM: Direct buffer memory → 检查是否有 buffer 未释放

十、诊断与调试参数

OOM 时自动保存现场

# 发生 OOM 时自动 dump 堆(必加)-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/var/log/app/heapdump.hprof# OOM 时直接退出进程(配合 K8s 自动重启,容器环境必加)-XX:+ExitOnOutOfMemoryError# OOM 时执行自定义脚本(如发告警)-XX:OnOutOfMemoryError="/opt/scripts/oom-alert.sh %p"
参数说明建议
-XX:+HeapDumpOnOutOfMemoryErrorOOM 时自动导出堆转储生产环境必加
-XX:HeapDumpPath=N堆转储文件路径指向有足够空间的目录
-XX:+ExitOnOutOfMemoryErrorOOM 时直接退出 JVM容器环境必加,配合 K8s 自动重启
-XX:OnOutOfMemoryError=cmdOOM 时执行自定义命令用于发告警或执行清理脚本

JFR(Java Flight Recorder)

# JDK 11+ 免费使用(JDK 8 需 Oracle JDK)-XX:StartFlightRecording=duration=60s,filename=/tmp/recording.jfr-XX:FlightRecorderOptions=stackdepth=128

常用诊断开关

参数说明场景
-XX:+PrintFlagsFinal启动时打印所有 JVM 参数的最终值确认参数是否生效
-XX:+PrintVMOptions打印启动时的 JVM 选项排查启动问题
-verbose:gc每次 GC 打印一行摘要快速观察 GC 行为
-XX:+UnlockDiagnosticVMOptions解锁诊断参数使用高级诊断参数时需要先加这个
-XX:+PrintSafepointStatistics打印安全点统计排查 STW 延迟
-XX:NativeMemoryTracking=summary跟踪 JVM 本地内存使用jcmd <pid> VM.native_memory summary查看

十一、常用 JDK 诊断命令速查

命令用途示例
jps -l列出 Java 进程找到目标进程 PID
jstat -gcutil <pid> 1000每秒打印 GC 使用率实时观察 GC 状态
jstat -gc <pid> 1000 10每秒打印 GC 详情,共 10 次详细分析
jmap -heap <pid>查看堆配置和使用情况快速检查堆状态
jmap -dump:format=b,file=heap.hprof <pid>导出堆转储MAT 分析内存泄漏
jmap -histo <pid>对象数量和大小的直方图快速找大对象
jstack <pid>线程堆栈快照排查死锁、CPU 高
jstack -l <pid>线程堆栈 + 锁信息排查锁竞争
jinfo -flags <pid>查看 JVM 启动参数确认线上参数
jcmd <pid> VM.flags查看 JVM 参数同 jinfo
jcmd <pid> GC.heap_dump /tmp/dump.hprof堆转储(推荐替代 jmap)对生产影响更小
jcmd <pid> VM.native_memory summary本地内存概况需开启 NMT

Arthas(生产环境推荐)

# 安装curl-Ohttps://arthas.aliyun.com/arthas-boot.jarjava-jararthas-boot.jar# 常用命令dashboard# 实时仪表盘(线程、内存、GC)thread-n3# CPU 最高的 3 个线程watchcom.example.Service getUser'{params, returnObj, throwExp}'-n5# 观察方法调用trace com.example.Service getUser'#cost > 100'# 方法耗时追踪sc-dcom.example.Service# 查看类加载信息jad com.example.Service# 反编译(确认线上代码版本)
http://www.jsqmd.com/news/1088285/

相关文章:

  • 5分钟快速上手Perseus:解锁碧蓝航线全皮肤的终极完整指南
  • 瑞萨RA8D1 AGT定时器:低功耗模式、时钟分频与五大工作模式实战详解
  • Java毕设项目:基于 SpringBoot 的工地建材租赁管控系统的设计与实现 (源码+文档,讲解、调试运行,定制等)
  • 瑞萨RA MCU CANFD驱动实战:FIFO与TX队列寄存器配置与避坑指南
  • Appium-MCP:AI Agent驱动的智能移动端自动化测试新范式
  • HarmonyOS应用文件加密存储实战:基于cryptoFramework与KeyStore的安全方案
  • 大模型 Token 技术深度研究:从分词原理到效率优化的系统性解构
  • 为什么80%的GEO优化都失败了?因为你忽略了“AI引用的第一定律“
  • SUR模型实战:从理论假设到Stata检验全解析
  • RA8D2 ESWM三层交换与VLAN配置实战解析
  • B站缓存视频转换终极方案:m4s-converter完整使用指南
  • 瑞萨RA8P1外设时钟配置实战:从CAN-FD到USB的精准配速指南
  • nvblox:GPU加速体素建图如何重塑机器人实时导航与规划
  • FPGA高效调试指南----实战篇(2)巧用Quartus II ISSP实现数码管动态交互验证
  • python爬虫实战项目|第71篇:实时数据流处理架构
  • ChatGPT入门必踩的3个致命误区:92%新手第1天就错,现在纠正还来得及?
  • JMeter性能测试从入门到实战:环境搭建、脚本设计与结果分析
  • I3C总线核心寄存器配置详解:从BMDS到BUSE的实战避坑指南
  • 【计算机毕业设计案例】基于 SpringBoot+Vue 的社区消防安全综合管理平台 面向基层社区的智慧消防设备监管系统的设计与实现(程序+文档+讲解+定制)
  • 低查重AI教材写作攻略:掌握这些技巧,用AI快速编写高质量教材
  • AI模型受限发布机制与可信能力验证方法
  • 角色、人气及角色转变
  • RA8D2接口时序参数手册解读:从SPI、OSPI到I3C的实战配置指南
  • 跨平台GUI自动化测试:基于元数据驱动的实践与架构设计
  • 问答口碑GEO优化支持代理合作吗
  • [智能体-568]:Win10 22H2 WSL2 官方在线安装全过程(含国内网络超时完整修复)
  • 动态ISAC系统中的多普勒鲁棒涡旋波前设计技术
  • 基于RPA与pytest的Ironic裸金属自动化测试实践
  • RoboBPP:机器人装箱物理仿真基准测试系统解析
  • Hint Learning与知识蒸馏本质区别:教模型‘看哪里’vs‘怎么想’