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

Jvm G1与ZGC启动参数

G1GC

G1GC 启动参数示例

-XX:+UseG1GC
-Xms4g
-Xmx4g
-XX:MaxGCPauseMillis=200
-XX:InitiatingHeapOccupancyPercent=45
-XX:G1HeapRegionSize=16m
-XX:ConcGCThreads=2
-XX:ParallelGCThreads=4
-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=512m
-XX:+ParallelRefProcEnabled
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/Users/xuechenxi/gallant/heapdumps
-XX:+PrintGCDetails
-verbose:gc
-XX:+UseAdaptiveSizePolicy
-Xlog:gc*:file=/Users/xuechenxi/gallant/gc.log:time,level,tags
-XX:+UnlockDiagnosticVMOptions
-XX:+PrintFlagsFinal

参数解释

  1. 堆大小设置
-Xms4g -Xmx4g

设置初始堆和最大堆大小为 4G。

  1. G1 垃圾收集器
-XX:+UseG1GC

启用 G1 垃圾收集器。

  1. 最大 GC 暂停时间
-XX:MaxGCPauseMillis=200

目标是将最大 GC 暂停时间控制在 200 毫秒以内。

  1. 启动并发标记周期的堆占用率阈值
-XX:InitiatingHeapOccupancyPercent=45

当堆内存使用率达到 45% 时,启动并发标记周期。

  1. 堆区域大小
-XX:G1HeapRegionSize=16m

设置 G1 堆区域的大小为 16M。这个值应该是 2 的幂次方,范围在 1M 到 32M 之间。

  1. 并发 GC 线程和并行 GC 线程
-XX:ConcGCThreads=2 -XX:ParallelGCThreads=4

设置并发 GC 线程数和并行 GC 线程数。

  1. 元空间设置
-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m

设置元空间的初始大小和最大大小。

  1. 并行引用处理
-XX:+ParallelRefProcEnabled

启用并行引用处理,减少垃圾回收暂停时间。

  1. 内存不足时生成堆转储
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdumps

内存不足时生成堆转储,并指定堆转储文件的路径。

  1. 垃圾回收日志
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintAdaptiveSizePolicy -Xlog:gc*:file=/path/to/gc.log:time,level,tags

启用详细的垃圾回收日志记录,并将日志输出到指定文件。

  1. 垃圾回收日志文件轮转
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=20M

启用垃圾回收日志文件轮转,最多保留 10 个日志文件,每个文件大小为 20M。

这些参数是一个初始的优化建议,你可以根据实际应用的性能表现进行进一步的调整

ZGC

关键参数

  • -XX:+UseZGC:启用 ZGC。
  • -Xms32g -Xmx32g:设置初始堆大小和最大堆大小为 32 GB。
  • -XX:SoftMaxHeapSize=28g:设置软最大堆大小。
  • -XX:+UnlockExperimentalVMOptions:解锁实验性 JVM 选项。
  • -XX:+ZGenerational:启用 ZGC 的世代模式。
  • -XX:ZCollectionInterval=10:设置两次垃圾回收之间的最短间隔时间。
  • -XX:ZAllocationSpikeTolerance=5.0:设置 ZGC 对内存分配峰值的容忍度。
  • -Xlog:gc*:file=/path/to/gc.log:time,level,tags:启用 GC 日志并输出到指定文件。
  • -Xlog:alloc*:file=/path/to/allocation.log:time,level,tags:启用分配日志并输出到指定文件(可选)。
  • -XX:+UseStringDeduplication:启用字符串去重。
  • -XX:+HeapDumpOnOutOfMemoryError:在发生 OOM 时生成堆转储。
  • -XX:HeapDumpPath=/path/to/heapdump:指定堆转储文件的保存路径。
  • -XX:+CrashOnOutOfMemoryError:在发生 OOM 时崩溃并生成错误报告。
  • -XX:ErrorFile=/path/to/hs_err_pid%p.log:指定错误报告文件的保存路径。
  • -XX:+UnlockDiagnosticVMOptions:解锁诊断性的 JVM 选项(仅调试时使用)。
  • -XX:+PrintFlagsFinal:打印所有 JVM 选项及其最终值(仅调试时使用)。
  • -Dcom.sun.management.jmxremote:启用 JMX 远程监控。
  • -Dcom.sun.management.jmxremote.port=9010:指定 JMX 远程监控端口。
  • -Dcom.sun.management.jmxremote.authenticate=false:禁用 JMX 远程监控认证(生产环境建议启用认证)。
  • -Dcom.sun.management.jmxremote.ssl=false:禁用 JMX 远程监控 SSL(生产环境建议启用 SSL)。
  • -jar your-application.jar:启动应用程序。

常见日志标签

  • gc: 垃圾收集相关的日志。
  • alloc: 内存分配相关的日志。
  • class: 类加载相关的日志。
  • os: 操作系统相关的日志。
  • safepoint: 安全点相关的日志。

注意事项

  1. 堆大小:根据你的应用需求和可用内存调整 -Xms 和 -Xmx 参数。
  2. 日志路径:确保指定的日志文件路径存在且有写权限。
  3. JMX 配置:在生产环境中启用 JMX 认证和 SSL,以确保安全性。

�通过这些参数配置,你可以优化 ZGC 的性能,并获取详细的 GC 和内存分配日志,以便更好地监控和调优 JVM 的内存管理。

http://www.lryc.cn/news/419424.html

相关文章:

  • zdpgo_gin_zap 整合zdpgo_gin框架和zdpgo_zap框架的日志中间件,用于实现路由日志记录
  • FOC电流环
  • 工业设备数据采集方案的设计实施与应用-天拓四方
  • 【MySQL】索引——索引的实现、B+ vs B、聚簇索引 VS 非聚簇索引、索引操作、创建索引、查询索引、删除索引
  • 剖析HTML 元素——WEB开发系列02
  • 影响3D打印零件品质的关键因素探析
  • Oracle事务是怎么练成的
  • 线程与多线程(一)
  • 连接其他主机上的redis连接不上`telnet: Unable to connect to remote host: Connection refused`
  • dijkstral算法详解
  • 创意指南丨AR数学沉浸式空间体验
  • linux文件——深度学习文件fd、文件系统调用
  • 003集——C#数据类型 及大小端序转换——C#学习笔记
  • 结构化输出及其使用方法
  • yolov8人脸识别案例
  • 成员变量在Java中的定义与使用
  • Python开发工具PyCharm入门指南 - 用户界面主题更改
  • TCP网络套接字
  • Element学习(axios异步加载数据、案例操作)(5)
  • 大数据-65 Kafka 高级特性 分区 Broker自动再平衡 ISR 副本 宕机恢复再重平衡 实测
  • html+css+js网页设计 软通动力网站2个页面(带js)首页轮播图+置顶导航
  • 【经验分享】ShardingSphere+Springboot-04:自定义分片算法(COMPLEX/STANDARD)
  • 如何设置RabbitMQ和Redis消息队列系统
  • 白骑士的Matlab教学高级篇 3.3 工具箱与扩展
  • bug: 配置flyway.locations多个脚本位置不生效
  • 8月5日SpringBoot学习笔记
  • Java学习笔记(二十):反射、动态代理、日志、类加载器、xml、单元测试Junit、注解
  • 如何快速从文本中找到需要的信息,字典和正则灵活运用
  • springboot3整合redis
  • VUE基础快速入门