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

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
5月前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
328 1
|
6月前
|
Java API 容器
Java基础学习day08-2
本节讲解Java方法引用与常用API,包括静态、实例、特定类型方法及构造器引用的格式与使用场景,并结合代码示例深入解析。同时介绍String和ArrayList的核心方法及其实际应用。
205 1
|
5月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
493 0
|
5月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
564 8
|
6月前
|
Java
Java基础学习day08-作业
本作业涵盖Java中Lambda表达式的应用,包括Runnable与Comparator接口的简化实现、自定义函数式接口NumberProcessor进行加减乘及最大值操作,以及通过IntProcessor处理整数数组,实现遍历、平方和奇偶判断等功能,强化函数式编程实践。
106 5
|
6月前
|
Java 程序员
Java基础学习day08
本节讲解Java中的代码块(静态与实例)及其作用,深入介绍内部类(成员、静态、局部及匿名)的定义与使用,并引入函数式编程思想,重点阐述Lambda表达式及其在简化匿名内部类中的应用。
180 5
|
6月前
|
Java
Java基础学习day07-作业
本作业包含六个Java编程案例:1)动物类继承与多态;2)加油卡支付系统;3)员工管理类设计;4)学生信息统计接口;5)USB设备控制;6)家电智能控制。综合运用抽象类、接口、继承、多态等面向对象技术,强化Java基础编程能力。
242 3
|
6月前
|
Java
Java基础学习day06-作业
本内容为Java基础学习作业,涵盖两个案例:一是通过Card类及其子类GoldenCard、SilverCard实现加油卡系统,体现封装与继承;二是通过Shape类及子类Circle、Rectangle演示多态与方法重写,强化面向对象编程理解。
120 1
|
6月前
|
设计模式 存储 Java
Java基础学习day07
本节讲解Java中的final关键字、单例设计模式、枚举类、抽象类与接口。涵盖常量定义、单例写法(饿汉式/懒汉式)、枚举特点及应用场景,以及抽象类与接口的使用与区别,助力掌握核心面向对象编程思想。
224 1
|
6月前
|
Java
Java基础学习day05-作业
本文为Java基础学习第五天作业,通过五个案例练习类与对象的定义、构造方法、set/get方法及成员方法的应用。涵盖女友、学生、教师、手机和电影等类的设计与测试,强化面向对象编程基础。
113 2