-Xms4g
-Xmx4g
-XX:NewRatio=2
-XX:SurvivorRatio=8
-Xss512k
-XX:ThreadStackSize=512
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=512m
-XX:CompressedClassSpaceSize=1g
-XX:+UseSerialGC
-XX:+UseParallelGC
-XX:+UseG1GC
-XX:+UseZGC
-XX:+UseShenandoahGC
-XX:+UseEpsilonGC
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:G1HeapRegionSize=16m
-XX:InitiatingHeapOccupancyPercent=45
-XX:G1ReservePercent=10
-XX:G1MixedGCCountTarget=8
-XX:G1HeapWastePercent=5
-XX:G1MixedGCLiveThresholdPercent=85
-XX:+UseZGC
-XX:+ZGenerational
-XX:ZCollectionInterval=5
-XX:ZAllocationSpikeTolerance=5
-XX:ConcGCThreads=2
-XX:+UseParallelGC
-XX:ParallelGCThreads=8
-XX:MaxGCPauseMillis=200
-XX:GCTimeRatio=99
-XX:YoungGenerationSizeIncrement=10
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-Xloggc:/path/to/gc.log
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=10
-XX:GCLogFileSize=10M
-Xlog:gc*:file=/path/to/gc.log:time,uptime,level,tags:filecount=10,filesize=10M
-verbose:gc
-XX:+PrintGCDetails
-XX:+PrintHeapAtGC
-XX:+PrintStringDeduplicationStatistics
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/path/to/heapdump.hprof
-XX:OnError="gdb -p %p"
-XX:OnOutOfMemoryError="kill -9 %p"
-XX:+PrintConcurrentLocks
-XX:+PrintSafepointStatistics
-XX:+PrintCommandLineFlags
-XX:+UseTieredCompilation
-XX:CompileThreshold=10000
-XX:ReservedCodeCacheSize=256m
-XX:+PrintCompilation
-XX:+UseTLAB
-XX:+UseStringDeduplication
-XX:+UseCompressedOops
-XX:+UseCompressedClassPointers
-XX:+UseBiasedLocking
-XX:+UseFastAccessorMethods
-XX:PretenureSizeThreshold=16m
-XX:MaxTenuringThreshold=15
-XX:TargetSurvivorRatio=50
-XX:+UseStringDeduplication
-XX:StringDeduplicationAgeThreshold=3
-XX:+TraceClassLoading
-XX:+TraceClassUnloading
-XX:+PrintClassHistogram
-XX:ParallelGCThreads=8
-XX:ConcGCThreads=2
-XX:CICompilerCount=2
java -Xms4g -Xmx4g \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:G1HeapRegionSize=16m \
-XX:InitiatingHeapOccupancyPercent=45 \
-Xlog:gc*:file=/path/to/gc.log:time,uptime,level,tags:filecount=10,filesize=10M \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/path/to/heapdump.hprof \
-jar app.jar
java -Xms8g -Xmx8g \
-XX:+UseZGC \
-XX:+ZGenerational \
-XX:ZCollectionInterval=5 \
-XX:ConcGCThreads=2 \
-Xlog:gc*:file=/path/to/gc.log:time,uptime,level,tags:filecount=10,filesize=10M \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/path/to/heapdump.hprof \
-jar app.jar
java -Xms4g -Xmx4g \
-XX:+UseParallelGC \
-XX:MaxGCPauseMillis=200 \
-XX:GCTimeRatio=99 \
-XX:+PrintGCDetails \
-XX:+PrintGCDateStamps \
-XX:+PrintGCTimeStamps \
-Xloggc:/path/to/gc.log \
-XX:+UseGCLogFileRotation \
-XX:NumberOfGCLogFiles=10 \
-XX:GCLogFileSize=10M \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/path/to/heapdump.hprof \
-jar app.jar
java -Xms512m -Xmx512m \
-XX:+UseSerialGC \
-Xss256k \
-XX:MetaspaceSize=64m \
-XX:MaxMetaspaceSize=128m \
-XX:+PrintGCDetails \
-XX:+PrintGCDateStamps \
-Xloggc:/path/to/gc.log \
-jar app.jar
- 初始堆 = 最大堆:避免动态扩容带来的性能损耗。
- 选择合适的 GC:根据场景选择 G1、ZGC 或 Parallel。
- 设置合理的停顿时间:G1 的 MaxGCPauseMillis 不要设置过小。
- 启用 GC 日志:便于问题排查和性能分析。
- 启用堆转储:OOM 时自动导出堆快照。
- 监控和调优:根据实际运行情况调整参数。