java+-------------------+ | Method Area | +-------------------+ | Heap | | +---------------+ | | | Young Generation| | | | Eden | | | | S0/S1 | | | +---------------+ | | | Old Generation | | | +---------------+ | +-------------------+ | Stack Area | +-------------------+ | Native Method | | Stack | +-------------------+
bash# Serial收集器
-XX:+UseSerialGC
# Parallel收集器
-XX:+UseParallelGC
# CMS收集器
-XX:+UseConcMarkSweepGC
# G1收集器
-XX:+UseG1GC
# ZGC收集器
-XX:+UseZGC
收集器 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
Serial | 简单高效,单线程 | 停顿时间长 | 单CPU环境,客户端应用 |
Parallel | 多线程,吞吐量高 | 停顿时间较长 | 多CPU,计算密集型应用 |
CMS | 并发收集,停顿时间短 | 内存碎片,CPU敏感 | 响应时间敏感的应用 |
G1 | 可预测停顿时间,区域化内存管理 | 内存占用较高 | 大内存,低延迟应用 |
ZGC | 超低延迟,可扩展性强 | 需要JDK 11+ | 超大堆内存,要求极低延迟 |
bash-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Xloggc:/path/to/gc.log
bashjstat -gc <pid> 1000 10 # 每1秒输出一次,共10次
输出列含义:
特点:CPU密集型,大量计算,较少IO
bash# 推荐配置
-Xms8g -Xmx8g
-Xmn6g # 大新生代,减少对象晋升
-XX:SurvivorRatio=8 # Eden与Survivor比例
-XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=100
-XX:ParallelGCThreads=8 # 根据CPU核心数设置
特点:IO密集型,频繁网络请求,较多等待
bash# 推荐配置
-Xms4g -Xmx4g
-Xmn1g # 较小新生代
-XX:SurvivorRatio=4
-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:ParallelCMSThreads=4
bash# G1收集器配置示例
-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=32m
bash-XX:ParallelGCThreads=4 -XX:ConcGCThreads=2
本文作者:大哥吕
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!