最近学习了JVM知识,针对Jdk8的一些Jvm参数整理了一下。以备后用。
常用jvm参数列表
指数 |
说明 |
|
内存配置相关 |
-Xms |
表示新生代初始内存的大小,应该小于-Xms的值; |
-Xmx |
表示新生代可被分配的内存的最大上限;当然这个值应该小于-Xmx的值; |
|
-XX:NewSize=10m |
新生代内存大小,表示新生代初始内存的大小,应该小于-Xms的值; |
|
-XX:MaxNewSize=10m |
表示新生代可被分配的内存的最大上限;当然这个值应该小于-Xmx的值; |
|
-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],一般默认的几个系统参数如下: |
|
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数。 |
|
-XX:+PrintGC |
打印每次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