【JVM】调优笔记3-----JVM参数配置 JDK1.8

一.关于JVM参数配置,有多种途径

1.在tomcat中直接配置的

  打开tomcat的安装目录, 在bin下修改catalina.bat文件

添加如下:

set "JAVA_OPTS=-Xmx300m -Xms300m -Xmn100m -XX:SurvivorRatio=8"

在这个位置:

启动tomcat即可起作用。

 

2.使用Myecplise,配置JVM参数

双击Tomcat,打开在如下位置,配置:

-Xmx300m
-Xms300m
-Xmn100m
-XX:SurvivorRatio=8

在如下位置即可。

 

 然后启动项目,即可起作用。

 

 

 

二.标准配置

-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

 

进行JVM的优化的这些参数

解释如下:

-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后,打印类的信息

 

 

三.我们把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冲突

 

参考资料:

  http://blog.csdn.net/mr__fang/article/details/47723767

  http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

  

时间: 2024-09-15 08:37:07

【JVM】调优笔记3-----JVM参数配置 JDK1.8的相关文章

JVM调优的几种策略(转)

    JVM参数调优是一个很头痛的问题,可能和应用有关系,别人说可以的对自己不一定管用.下面是本人一些JVM调优的实践经验,希望对读者能有帮助,环境LinuxAS4,resin2.1.17,JDK6.0,2CPU,4G内存,dell2950服务器.        JVM调优        一:JVM调优之串行垃圾回收        也就是默认配置,完成10万request用时153秒.JVM参数配置如下:        $JAVA_ARGS.="-Dresin.home=$SERVER_ROO

jvm系列(七):jvm调优-工具篇

16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化.工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗费性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率较低,因此利用工具来分析jvm相关问题,长长可以到达事半功倍的效果来. jvm监控分析工具一般分为两类,一种是jdk自带的工具,一种是第三方的分析工具.jdk自带工具一般在jdk bin目录下面,

【JVM】调优笔记2-----JVM在JDK1.8以后的新特性以及VisualVM的安装使用

一.JVM在新版本的改进更新以及相关知识   1.JVM在新版本的改进更新 图中可以看到运行时常量池是放在方法区的 1.1对比: JDK 1.7 及以往的 JDK 版本中,Java 类信息.常量池.静态变量都存储在 Perm(永久代)里.类的元数据和静态变量在类加载的时候分配到 Perm,当类被卸载的时候垃圾收集器从 Perm 处理掉类的元数据和静态变量.当然常量池的东西也会在 Perm 垃圾收集的时候进行处理. JDK 1.8 的对 JVM 架构的改造将类元数据放到本地内存中,另外,将常量池和

《Java程序性能优化》学习笔记 JVM调优

第五章 JVM调优5.1 Java虚拟机内存模型 1.JVM虚拟机将其内存数据分为程序计数器.虚拟机栈,本地方法栈,Java堆,和方法去等部分. 2.Java虚拟机栈,在Java 虚拟机规范中,定义了两种异常与占空间相关,即StackOverError和OutOfMemoryError.如果线程在计算过程中,请求的栈深度大于最大可用的栈深度,则抛出SOE,如果Java栈可以动态扩展,而在扩展栈的过程中,没有足够的内存空间来支持栈的扩展,则抛出OutOfMemoryError. 栈的大小直接决定了

JVM调优

在了解JVM调优之前,我们先了解下java的内存管理:http://blog.csdn.net/cymm_liu/article/details/7759696 基于Java的应用最大的问题莫过于出现Out Of Memory Error(内存溢出错误),通常出现OOME问题的应用都会有以下一些表现: l         Jvm crash l         性能奇差 l         Jvm似乎在不断的进行垃圾回收收集,这通常致使程序停止运行甚至服务崩溃   而且一旦出现这种情况,一般都需

JVM调优浅谈

[本文转载自JVM调优浅谈] 1.数据类型     java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:它代表的值就是数值本身,而引用类型的变量保存引用值."引用值"代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置.     基本类型包括:byte.short.int.long.char.float.double.boolean.returnAddress     引用类型包括:类类型.接口类型和数组 2.堆与栈  

jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)

文章同步发布于github博客地址,阅读效果更佳,欢迎品尝 运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,一方面工具的使用会有所限制,另一方面喜欢装X的我们,总喜欢在出现问题的时候在终端输入一些命令来解决.所有的工具几乎都是依赖于jdk的接口和底层的这些命令,研究这些命令的使用也让我们更能了解jvm构成和特性

jvm 调优-JVM调优问题,请大神指教

问题描述 JVM调优问题,请大神指教 JVM调优是针对 jdk调优 还是 容器 像tomcat调优 具体怎么手动修改jvm的队内存,栈内存,新生代,老年代和持久带,具体在配置 比如说我安装了一个jdk6的环境变量也配置好了,具体怎么弄

基于JVM 调优的技巧总结分析_java

这篇是技巧性的文章,如果要找关于GC或者调整内纯的文章,看我其他几篇文章.因为是JVM 调优总结,所以废话少说.从各方面一共收集到以下几个方法:1.升级 JVM 版本.如果能使用64-bit,使用64-bit JVM.    基本上没什么好解释的,很简单将JVM升级到最新的版本.如果你还是使用JDK1.4甚至是更早的JVM,那你首先要做的就是升级.因为JVM从1.4- >1.5->1.6可不是仅仅的版本号升级,或者仅仅往里面加了一堆新的语言特性,这么简单.而是真正在JVM做了重大的改进,每次版

JVM调优总结(十)-调优方法

JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 JProfiler:商业软件,需要付费.功能强大.详细说明参考这里 VisualVM:JDK自带,功能强大,与JProfiler类似.推荐. 如何调优 观察内存释放情况.集合类检查.对象树 上面这些调优工具都提供了强大的功能,但是总的来说一般分为以下几类功能 堆信息查看 可查看堆空间大小分配(年轻代