Java8相关的Jvm参数学习

简介: java启动默认参数详细

最近学习了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],一般默认的几个系统参数如下:
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数。

-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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
19小时前
|
存储 算法 搜索推荐
滚雪球学Java(27):从零开始学习数组:定义和初始化
【5月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
7 3
|
2天前
|
缓存 Java 数据库
Java并发编程学习11-任务执行演示
【5月更文挑战第4天】本篇将结合任务执行和 Executor 框架的基础知识,演示一些不同版本的任务执行Demo,并且每个版本都实现了不同程度的并发性。
20 4
Java并发编程学习11-任务执行演示
|
3天前
|
Java 开发工具
JVM参数太多?一网打尽常用JVM参数!
JVM参数太多?一网打尽常用JVM参数!
|
3天前
|
Java 索引
深入浅出JVM(五)之Java中方法调用
深入浅出JVM(五)之Java中方法调用
|
4天前
|
数据库连接
java+ssm+vue代码视频学习讲解
java+ssm+vue代码视频学习讲解
6 0
|
5天前
|
Java 编译器 对象存储
java一分钟之Java入门:认识JDK与JVM
【5月更文挑战第7天】本文介绍了Java编程的基础——JDK和JVM。JDK是包含编译器、运行时环境、类库等的开发工具包,而JVM是Java平台的核心,负责执行字节码并实现跨平台运行。常见问题包括版本不匹配、环境变量配置错误、内存溢出和线程死锁。解决办法包括选择合适JDK版本、正确配置环境变量、调整JVM内存参数和避免线程死锁。通过代码示例展示了JVM内存管理和基本Java程序结构,帮助初学者更好地理解JDK和JVM在Java编程中的作用。
18 0
|
5天前
|
存储 监控 安全
JVM工作原理与实战(十六):运行时数据区-Java虚拟机栈
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了运行时数据区、Java虚拟机栈等内容。
11 0
|
6天前
|
存储 缓存 安全
【 Java中String源码分析(JVM视角你不来看看?】
【 Java中String源码分析(JVM视角你不来看看?】
13 0
|
10天前
|
XML 存储 Java
11:Servlet中初始化参数的获取与应用-Java Web
11:Servlet中初始化参数的获取与应用-Java Web
24 3
|
12天前
|
Java
jvm配置参数,查看大对象直接分配到老年代
jvm配置参数,查看大对象直接分配到老年代