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冲突


相关文章
|
3月前
|
存储 算法 Java
jvm性能优化(一)-基于JDK1.8
jvm性能优化(一)-基于JDK1.8
|
1月前
|
Java
JVM内存参数
-Xmx[]:堆空间最大内存 -Xms[]:堆空间最小内存,一般设置成跟堆空间最大内存一样的 -Xmn[]:新生代的最大内存 -xx[use 垃圾回收器名称]:指定垃圾回收器 -xss:设置单个线程栈大小 一般设堆空间为最大可用物理地址的百分之80
|
2月前
|
监控 架构师 Java
JVM进阶调优系列(6)一文详解JVM参数与大厂实战调优模板推荐
本文详述了JVM参数的分类及使用方法,包括标准参数、非标准参数和不稳定参数的定义及其应用场景。特别介绍了JVM调优中的关键参数,如堆内存、垃圾回收器和GC日志等配置,并提供了大厂生产环境中常用的调优模板,帮助开发者优化Java应用程序的性能。
|
2月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
140 1
|
2月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
75 3
|
2月前
|
Java Android开发 开发者
【编程进阶知识】精细调控:掌握Eclipse JVM参数配置的艺术
本文详细介绍了如何在Eclipse中配置JVM参数,包括内存的初始和最大值设置。通过具体步骤和截图演示,帮助开发者掌握JVM参数的精细调控,以适应不同的开发和测试需求。
52 1
|
3月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
2月前
|
Oracle Java 关系型数据库
jdk17安装全方位手把手安装教程 / 已有jdk8了,安装JDK17后如何配置环境变量 / 多个不同版本的JDK,如何配置环境变量?
本文提供了详细的JDK 17安装教程,包括下载、安装、配置环境变量的步骤,并解释了在已有其他版本JDK的情况下如何管理多个JDK环境。
1541 0
|
3月前
|
Oracle Java iOS开发
JDK的选型、安装与配置
JDK的选型、安装与配置
135 1
|
3月前
|
Oracle Java iOS开发
JDK的选型、安装与配置
JDK的选型、安装与配置
141 1