JVM 配置简洁说明

发布时间 2023-03-30 16:01:58作者: 何童鞋
 1 代理
 2 -javaagent:jacoco.jar=key1=value1,key2=value2 -jar Demo.jar
 3 
 4 编码
 5 -Dfile.encoding=UTF-8:设置编码规范
 6 
 7 内存
 8 工具或持续集成最常用的一条
 9 -Xmx1G 最大堆内存,注意没等号,避免OOM: OutOfMemoryError(堆)内存不足错误
10 java.lang.OutOfMemoryError: java heap space
11 
12 生产服务器经常会设置的两条(阿里规范提出),注意文件夹需存在
13 -XX:+HeapDumpOnOutOfMemoryError(打印OOM堆快照)
14 -XX:HeapDumpPath=../logs/heapdump.hprof(打印OOM堆快照路径)
15 https://www.jianshu.com/p/4e6e88f1d211
16 
17 -XX:MaxPermSize=(持久代内存,避免OOM)
18 大量类加载器反射加载重复类时才出现,比较少见
19 java.lang.OutOfMemoryError: PermGen space
20 
21 -server(启动慢运行快的服务器模式,64位只能这个模式不用设)
22 
23 -Xms(启动堆内存)
24 -Xmn(年轻内存)
25 -Xss(线程栈内存解决StackOverflowError)
26 -XX:NewRatio=(年轻/年老)
27 -XX:SurvivorRatio=(Eden/Survivor)
28 -XX:PermSize(初始方法区/持久代内存)
29 -XX:MaxTenuringThreshold=(垃圾最大年龄)
30 
31 吞吐量优先的并行收集器:
32 -XX:+UseParallelGC(年轻并行收集对UseSerialGC)
33 -XX:ParallelGCThreads=(并行收集线程数(核心数))
34 -XX:+UseParallelOldGC(年老并行收集JDK6)
35 -XX:MaxGCPauseMillis=(年轻回收最长时间)
36 -XX:+UseAdaptiveSizePolicy(自动比例)
37 
38 响应时间优先的并发收集器:
39 -XX:+UseConcMarkSweepGC(年老并发收集)
40 -XX:+UseParNewGC(年轻并行收集)
41 -XX:CMSFullGCsBeforeCompaction=(多少次GC后整理内存)
42 -XX:+UseCMSCompactAtFullCollection(打开年老压缩)
43 
44 -XX:GCTimeRatio=n(垃圾回收时间比不超过1/(1+n))
45 -XX:+CMSIncrementalMode(单CPU用增量模式)

IDEA JVM 设置解析

-Xms128m
-Xmx750m
-XX:ReservedCodeCacheSize=240m(JIT预留代码缓存大小)
-XX:+UseConcMarkSweepGC(使用CMC并发标记清除)
-XX:SoftRefLRUPolicyMSPerMB=50(软引用LRU策略毫秒每兆)
-ea
-XX:CICompilerCount=2(最大并行编译数)
-Dsun.io.useCanonPrefixCache=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow(省略异常栈信息快速抛出)
-Djdk.attach.allowAttachSelf=true
-Dkotlinx.coroutines.debug=off
-Djdk.module.illegalAccess.silent=true