Java技术干货| JVM常用的优化思路及配置参数
设置堆大小:
通过-Xms和-Xmx参数设置初始堆大小和最大堆大小。
示例: -Xms512m -Xmx1024m
设置新生代和老年代比例:
通过-XX:NewRatio参数设置新生代和老年代内存比例。
示例: -XX:NewRatio=2
设置垃圾收集器:
通过-XX:+UseParallelGC参数设置并行垃圾收集器。
示例: -XX:+UseParallelGC
设置GC线程数:
通过-XX:ParallelGCThreads参数设置并行垃圾收集器的线程数。
示例: -XX:ParallelGCThreads=4
设置GC回收时间:
通过-XX:MaxGCPauseMillis参数设置最大垃圾回收暂停时间。
示例: -XX:MaxGCPauseMillis=500
设置GC日志:
通过-XX:+PrintGC参数启用GC日志。
示例: -XX:+PrintGC
设置GC日志文件路径:
通过-XX:PrintGCDetails和-Xloggc参数设置GC日志输出到文件。
示例: -XX:PrintGCDetails -Xloggc:/path/to/gc.log
开启GC日志文件拆分:
通过-XX:+UseGCLogFileRotation和-XX:NumberOfGCLogFiles参数设置GC日志文件的拆分。
示例: -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5
设置GC日志文件大小:
通过-XX:GCLogFileSize参数设置GC日志文件的大小。
示例: -XX:GCLogFileSize=10M
设置GC并发线程数:
通过-XX:ConcGCThreads参数设置并发垃圾收集器的线程数。
示例: -XX:ConcGCThreads=2
关闭偏向锁:
通过-XX:-UseBiasedLocking参数关闭偏向锁。
示例: -XX:-UseBiasedLocking
设置栈大小:
通过-Xss参数设置线程栈大小。
示例: -Xss256k
设置元空间大小:
通过-XX:MetaspaceSize和-XX:MaxMetaspaceSize参数设置元空间大小。示例: -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
关闭逃逸分析:
通过-XX:-DoEscapeAnalysis参数关闭逃逸分析。
示例: -XX:-DoEscapeAnalysis
关闭栈上分配:
通过-XX:-UseTLAB参数关闭栈上分配。
示例: -XX:-UseTLAB
关闭字符串重复:
通过-XX:-OptimizeStringConcat参数关闭字符串重复。
示例: -XX:-OptimizeStringConcat
开启大对象直接进入老年代:
通过-XX:+UseLargePagesInMetaspace参数开启大对象直接进入老年代。
示例: -XX:+UseLargePagesInMetaspace
开启类数据共享:
通过-XX:+UseSharedClassList和-XX:SharedClassListFile参数开启类数据共享。
示例: -XX:+UseSharedClassList -XX:SharedClassListFile=classes.jsa
设置线程堆栈预留空间:
通过-XX:ThreadStackSize参数设置线程堆栈预留空间。
示例: -XX:ThreadStackSize=1m
开启动态编译:
通过-XX:+TieredCompilation参数开启动态编译。
示例: -XX:+TieredCompilation
设置编译阈值:
通过-XX:CompileThreshold参数设置编译阈值。
示例: -XX:CompileThreshold=1000
开启基于时间的垃圾回收:
通过-XX:+UseAdaptiveSizePolicy参数开启基于时间的垃圾回收。
示例: -XX:+UseAdaptiveSizePolicy
设置并行GC的线程数:
通过-XX:ParallelGCThreads参数设置并行GC的线程数。
示例: -XX:ParallelGCThreads=4
设置最大直接内存大小:
通过-XX:MaxDirectMemorySize参数设置最大直接内存大小。
示例: -XX:MaxDirectMemorySize=1g
关闭编译器优化:
通过-XX:-UseCompiler参数关闭编译器优化。
示例: -XX:-UseCompiler
关闭栈帧扩展:
通过-XX:-UseStackBanging参数关闭栈帧扩展。
示例: -XX:-UseStackBanging
开启内联优化:
通过-XX:+Inline参数开启内联优化。
示例: -XX:+Inline
设置本地堆大小:
通过-XX:NativeMemoryTracking参数设置本地堆大小。
示例: -XX:NativeMemoryTracking=summary
设置最大元数据区域大小:
通过-XX:MaxMetaspaceSize参数设置最大元数据区域大小。
示例: -XX:MaxMetaspaceSize=256m
设置最大Code Cache大小:
通过-XX:ReservedCodeCacheSize参数设置最大Code Cache大小。
示例: -XX:ReservedCodeCacheSize=256m
设置最大字符串区域大小:
通过-XX:StringTableSize参数设置最大字符串区域大小。
示例: -XX:StringTableSize=1000000
设置最大堆外内存大小:
通过-XX:MaxDirectMemorySize参数设置最大堆外内存大小。
示例: -XX:MaxDirectMemorySize=1g
开启超线程:
通过-XX:+UseHyperThreads参数开启超线程。示例: -XX:+UseHyperThreads
设置线程池大小:
通过-XX:ParallelGCThreads参数设置线程池大小。
示例: -XX:ParallelGCThreads=4
开启异步GC:
通过-XX:+UseG1GC参数开启异步GC。
示例: -XX:+UseG1GC