JVM参数配置 JDK1.8

简介: JVM参数配置 JDK1.8

一.标准配置:


[这里是图片001]


-Xmx300m

-Xms300m

-Xmn100m

-XX:SurvivorRatio=8


-XX:+UseG1GC

-XX:MaxTenuringThreshold=14

-XX:ParallelGCThreads=8

-XX:ConcGCThreads=8


-XX:+DisableExplicitGC


-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=d:/a.dump

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-XX:+PrintHeapAtGC

-XX:+TraceClassLoading

-XX:+PrintClassHistogram


[这里是图片002]


进行JVM的优化的这些参数


解释如下:


[这里是图片003]


-Xmx300m       最大堆大小

-Xms300m         初始堆大小

-Xmn100m         年轻代大小

-XX:SurvivorRatio=8       Eden区与Survivor区的大小比值,设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10


-XX:+UseG1GC       使用 G1 (Garbage First) 垃圾收集器

-XX:MaxTenuringThreshold=14   提升年老代的最大临界值(tenuring threshold). 默认值为 15[每次GC,增加1岁,到15岁如果还要存活,放入Old区]

-XX:ParallelGCThreads=8   设置垃圾收集器在并行阶段使用的线程数[一般设置为本机CPU线程数相等,即本机同时可以处理的个数,设置过大也没有用]

-XX:ConcGCThreads=8     并发垃圾收集器使用的线程数量


-XX:+DisableExplicitGC          禁止在启动期间显式调用System.gc()


-XX:+HeapDumpOnOutOfMemoryError OOM时导出堆到文件

-XX:HeapDumpPath=d:/a.dump    导出OOM的路径

-XX:+PrintGCDetails      打印GC详细信息

-XX:+PrintGCTimeStamps     打印CG发生的时间戳

-XX:+PrintHeapAtGC       每一次GC前和GC后,都打印堆信息

-XX:+TraceClassLoading     监控类的加载

-XX:+PrintClassHistogram       按下Ctrl+Break后,打印类的信息


[这里是图片004]


二.我们把GC分成4种类型


1. SerialGC

参数-XX:+UseSerialGC

就是Young区和old区都使用serial 垃圾回收算法,

2. ParallelGC

参数-XX:+UseParallelGC

Young区:使用Parallel scavenge 回收算法

Old 区:可以使用单线程的或者Parallel 垃圾回收算法,由 -XX:+UseParallelOldGC 来控制

3. CMS

参数-XX:+UseConcMarkSweepGC

Young区:可以使用普通的或者parallel 垃圾回收算法,由参数 -XX:+UseParNewGC来控制

Old 区:只能使用Concurrent Mark Sweep

4. G1

参数:-XX:+UseG1GC

没有young/old区


三.一些配置解释


1.选项/默认值 说明

-XX:+UseG1GC 使用 G1 (Garbage First) 垃圾收集器

-XX:MaxGCPauseMillis=n 设置最大GC停顿时间(GC pause time)指标(target). 这是一个软性指标(soft goal), JVM 会尽量去达成这个目标.

-XX:InitiatingHeapOccupancyPercent=n 启动并发GC周期时的堆内存占用百分比. G1之类的垃圾收集器用它来触发并发GC周期,基于整个堆的使用率,而不只是某一代内存的使用比. 值为 0 则表示"一直执行GC循环". 默认值为 45.

-XX:NewRatio=n 新生代与老生代(new/old generation)的大小比例(Ratio). 默认值为 2.

-XX:SurvivorRatio=n eden/survivor 空间大小的比例(Ratio). 默认值为 8.

-XX:MaxTenuringThreshold=n 提升年老代的最大临界值(tenuring threshold). 默认值为 15.

-XX:ParallelGCThreads=n 设置垃圾收集器在并行阶段使用的线程数,默认值随JVM运行的平台不同而不同.

-XX:ConcGCThreads=n 并发垃圾收集器使用的线程数量. 默认值随JVM运行的平台不同而不同.

-XX:G1ReservePercent=n 设置堆内存保留为假天花板的总量,以降低提升失败的可能性. 默认值是 10.

-XX:G1HeapRegionSize=n 使用G1时Java堆会被分为大小统一的的区(region)。此参数可以指定每个heap区的大小. 默认值将根据 heap size 算出最优解. 最小值为 1Mb, 最大值为 32Mb.


2.JVM堆大小的默认最大和最小值(参考)


操作系统及JVM类型


初始堆的大小(Xms)


最大堆的大小(Xmx)


Linux/Solaris,32位客户端


16MB


256MB


Linux/Solaris,32位服务器


64MB


取1GB和物理内存大小1/4二者中的最小值


Linux/Solaris,64位服务器


取512MB和物理内存大小1/64二者中的最小值


取32GB和物理内存大小1/4二者中的最小值


MacOS,64位服务器型JVM


64MB


取1GB和物理内存大小1/4二者中的最小值


32位Window系统,客户端型JVM


16MB


256MB


64位Window系统,客户端型JVM


64MB


1GB和物理内存大小1/4二者中的最小值


3.一般性调优办法


-Xmx 和-Xms 一般设置为一样大小,这样能稍微提高GC的运行效率,因为他/她不再需要估算堆是否需要调整大小了


JVM参数配置报错:


1.Conflicting collector combinations in option list; please refer to the release notes for the combina

报错:使用多种GC导致GC冲突


相关文章
|
10天前
|
Java 关系型数据库 MySQL
JDK、Tomcat、MariaDB数据库和Profile多环境的配置与使用
以上就是JDK、Tomcat、MariaDB数据库和Profile多环境的配置与使用的基本步骤。这些步骤可能会因为你的具体需求和环境而有所不同,但是基本的思路是一样的。希望这些信息能够帮助你更好地理解和使用这些工具。
57 17
|
1月前
|
Java Linux 应用服务中间件
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
142 21
|
7月前
|
存储 算法 Java
jvm性能优化(一)-基于JDK1.8
jvm性能优化(一)-基于JDK1.8
|
1月前
|
Oracle Java 关系型数据库
课时4:JDK的安装与配置
课时4:JDK的安装与配置 摘要: 1. JDK安装:从Oracle官网下载适合操作系统的JDK版本,确保关闭防火墙,选择正确的位数(如64位),并进行一键式安装。 2. JDK配置:将JDK的bin目录路径(如D:\Java\jdk1.8.0_74\bin)添加到系统环境变量PATH中,确保Java开发命令(如javac、java)可用。配置完成后,重启命令行工具验证安装是否成功。 通过以上步骤,确保Java开发环境的正确搭建。
154 0
|
1月前
|
Java
课时5:JDK安装与配置
课时5:JDK安装与配置,主讲人李兴华。课程详细讲解了JDK的安装步骤和环境配置方法,包括选择安装路径、配置系统环境变量(如path),确保javac和java命令在命令行中可用。建议将所有程序安装在D盘,便于管理。安装完成后,需重启命令行以加载新环境配置,确保Java开发环境正常运行。
|
5月前
|
Java
JVM内存参数
-Xmx[]:堆空间最大内存 -Xms[]:堆空间最小内存,一般设置成跟堆空间最大内存一样的 -Xmn[]:新生代的最大内存 -xx[use 垃圾回收器名称]:指定垃圾回收器 -xss:设置单个线程栈大小 一般设堆空间为最大可用物理地址的百分之80
|
6月前
|
监控 架构师 Java
JVM进阶调优系列(6)一文详解JVM参数与大厂实战调优模板推荐
本文详述了JVM参数的分类及使用方法,包括标准参数、非标准参数和不稳定参数的定义及其应用场景。特别介绍了JVM调优中的关键参数,如堆内存、垃圾回收器和GC日志等配置,并提供了大厂生产环境中常用的调优模板,帮助开发者优化Java应用程序的性能。
|
6月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
432 3
|
6月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
350 1
|
6月前
|
Java Android开发 开发者
【编程进阶知识】精细调控:掌握Eclipse JVM参数配置的艺术
本文详细介绍了如何在Eclipse中配置JVM参数,包括内存的初始和最大值设置。通过具体步骤和截图演示,帮助开发者掌握JVM参数的精细调控,以适应不同的开发和测试需求。
97 1