最近学习了JVM知识,针对Jdk8的一些Jvm参数整理了一下。以备后用。
常用jvm参数列表
指数 | 说明 | |
内存配置相关 | -Xms | 表示新生代初始内存的大小,应该小于-Xms的值; |
-Xmx | 表示新生代可被分配的内存的最大上限;当然这个值应该小于-Xmx的值; | |
-XX:NewSize=10m | 新生代内存大小,表示新生代初始内存的大小,应该小于-Xms的值; | |
-XX:MaxNewSize=10m | ||
-XX:MaxDirectMemorySize=10m | 为NIO的direct-buffer分配时指定最大的内存大小。默认是0,意思是JVM自动选择direct-buffer的大小。 | |
-XX:MaxMetaspaceSize | 指定元数据区大小 | |
-XX:MetaspaceSize | 元数据区会在达到指定大小时发生垃圾回收,默认20.8M左右(x86下开启c2模式) | |
-XX:MinMetaspaceFreeRatio | 当内存剩余比例小于这个值时垃圾回收会频繁一些, 默认40%。 | |
-XX:MaxMetaspaceFreeRatio | 当内存剩余比例大于这个值时垃圾回收频率会低一点,默认70%。 | |
-XX:StringTableSize=N | 指定常量池大小 | |
-XX:+PrintStringTableStatistics | JVM进程退出时会打印StringTable统计信息 | |
-Xsssize | 设置thread stack大小同[-XX:ThreadStackSize],一般默认的几个系统参数如下: Linux/x64: 1024 KB OS: 1024 KB | |
GC相关 | -verbose:gc | 展示每个GC事件的信息 |
-XX:+PrintGC | 展示每个GC事件的信息,包含-verbose:gc | |
-XX:+PrintGCDetails | 程序产生GC时,打印垃圾回收的详细信息,包含-XX:+PrintGC | |
-Xloggc:filename | 设置gc日志文件,gc相关信息会重定向到该文件。这个配置如果和-verbose:gc同时出现,会覆盖-verbose:gc参数。 | |
-XX:+UseGCLogFileRotation | 启用GC日志文件的自动转储 | |
-XX:NumberOfGCLogFiles=1 | GC日志文件的循环数目 | |
-XX:GCLogFileSize=1M | 控制GC日志文件的大小 | |
-XX:+PrintGCDateStamps | 输出gc的触发日期 | |
-XX:+PrintGCTimeStamps | 输出gc的触发时间 | |
-verbose:jni | 开启展示JNI调用信息。 | |
-XX:+HeapDumpBeforeFullGC | 发生fullGC前做heap dump | |
-XX:+HeapDumpAfterFullGC | 发生fullGC后做heap dump | |
-XX:+HeapDumpOnOutOfMemoryError | 参数表示当JVM发生OOM时,自动生成DUMP文件 | |
-XX:HeapDumpPath=heapdump.hprof | ${目录}参数表示生成DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。如果不指定文件名,默认为:java_<pid>_<date>_<time>_heapDump.hprof。 | |
-XX:ErrorFile=filename | 当不可恢复的错误发生时,错误信息记录到哪个文件。默认是在当前目录的一个叫做hs_err_pid pid.log的文件。如果指定的目录没有写权限,这时候文件会创建到/tmp目录下。 | |
-XX:ConcGCThreads=2 | 设置支持并发GC的线程数。默认值依赖于给JVM的CPU数目。 | |
-XX:CMSTriggerRatio=50 | 设置一个在CMS开始前的内存的触发百分比,针对的是由-XX:MinHeapFreeRatio分配的内存。默认是80。 | |
-XX:ParallelGCThreads=threads | 并行GC时的线程数。默认值是CPU数。 | |
打印每次GC的消息,默认是关闭的。 | ||
-XX:+PrintGCApplicationConcurrentTime | 打印上次GC暂停到目前的时间。默认不打印。 | |
-XX:+PrintGCApplicationStoppedTime | 打印GC暂停的时间长度。默认不打印。 | |
-XX:+UseG1GC | 设置使用G1作为GC收集器。G1比较推荐在大堆应用场景下使用(大于6GB)。 | |
-XX:+UseSHM | 在Linux环境下支持JVM使用共享内存来设置大页。 |
推荐默认开启的参数为:
java -Xms1024M -Xmx2048M XX:MetaspaceSize=125m -XX:MaxMetaspaceSize=256m -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=2 -XX:GCLogFileSize=1M -XX:+PrintGCDetails -Xloggc:gc.log -XX:+PrintGCTimeStamps -XX:+PrintStringTableStatistics -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heapdump.hprof -jar xxx.jar