JVM配置项说明
1、java虚拟机可配置参数整理
- java参数配置参数分成三类
- 标准参数(-开头) 如-version
- 非标准参数(-X开头)
- 非稳定参数(-XX开头)
## 第一部分:JMM配置参数
-Xmn 新生代大小
-Xms 初始内存大小
-Xmx 堆最大值
-xxs 线程栈内存
-XX:NewSize=2.125m 新生代大小
-XX:MaxNewSize=size 新生代最大
-XX:MaxPermSize=64m 最大方法区
-XX:PermSize=64m 方法区
-XX:MaxTenuringThreshold=15 新生代存活次数
-XX:MaxHeapFreeRatio=70 GC最大堆内存闲置比率
-XX:MinHeapFreeRatio=40 最小比率
-XX:NewRatio=2 新生代和老年代的比率
-XX:ThreadStackSize=512 线程栈大小
-XX:PretenureSizeThreshold= size
-XX:SurvivorRatio=8 伊甸区容量比率
## 第二部分:GC配置参数
-XX:+UseSerialGC 使用SerialGC
-XX:+UseParallelGC 使用ParallelGC
-XX:+UseParNewGC 使用ParNewGC
-XX:ParallelGCThreads 并发线程数
-XX:+UseParallelOldGC 使用ParallelOldGC
-XX:+UseConcMarkSweepGC
-XX:-DisableExplicitGC
-XX:+ScavengeBeforeFullGC
## 第三部分:日志打印配置参数
-XX:-CITime
-XX:ErrorFile=./hs_err_pid<pid>.log
-XX:-ExtendedDTraceProbes
-XX:HeapDumpPath=./java_pid<pid>.hprof
-XX:-HeapDumpOnOutOfMemoryError
-XX:-PrintGC 日志打印
-XX:-PrintGC Details 详细日志打印
-XX:-PrintGCTimeStamps
-XX:-TraceClassLoading
-XX:-TraceClassLoadingPreorder
-XX:-TraceClassResolution
-XX:-TraceClassUnloading
-XX:-TraceLoaderConstraints
## 第四部分:其他的
2、经典的参数搭配整理
-Xms4096M
-Xmx4096M
-Xmn2048M
-XX:MetaspaceSize=256M
-XX:MaxMetaspaceSize=256M
-XX:+UseParNewGC # 年轻代GC
-XX:+UseConcMarkSweepGC # 老年代GC
-XX:+CMSScavengeBeforeRemark # 标记钱先执行一次新生代GC,建议去掉
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly # 解决GC回收的毛刺问题
3、一般可调有参数
## 堆内存分配
-Xms10000M ## 1、内存不足错误,可以扩大堆内存
-Xmx10000M
-Xmn5000M ## 2、大对象太多,可以将年轻代设置小一点
-Xss256K ## 3、如果高并发环境,单个线程堆栈可以适当调小
-XX:MaxTenuringThreshold=1
-XX:SurvivorRatio=30 # 4、小对象太多,可以设置比率大一点
-XX:TargetSurvivorRatio=50
-Xnoclassgc
-XX:PermSize=256m
-XX:MaxPermSize=256m # 5、静态数据太多,可以设置大一点,反之小一点
-XX:MetaspaceSize=200M # 6、如果动态代理比较多,可以设置大一点
## 垃圾回收器设置
-XX:+UseParNewGC ## 新生代使用PartNew回收器
-XX:+UseConcMarkSweepGC ## 老年代使用CMS回收器
-XX:ParallelGCThreads=24 # 设置并发回收线程数
-XX:ConcGCThreads=24
-XX:CMSInitiatingOccupancyFraction=80
-XX:+CMSParallelRemarkEnabled
-XX:+CMSScavengeBeforeRemark
-XX:+ExplicitGCInvokesConcurrent
-XX:+UseTLAB
-XX:TLABSize=64K
# 日志打印参数设置
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
JVM工具命令行整理
- javac java源文件编译命令
- java jar包发布命令
- 例如: java -jar …jar
- 用法 java [-options] class [args…]
- jar java文件打包指令
- 用法 jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files …
- javadoc 生成java文档
- javadoc [options] [packagenames] [sourcefiles] [@files]
- javap java反编译