jvm的调优工具和参数

这一篇主要记录一下jvm的调优工具和参数
 
JVM调优我们用到的工具:
jps:   JVM Process Status Tool, 显示指定系统内所有的 HotSpot 虚拟机进程。(还可以使用 ps aux|grep java )
jstat:  JVM statistics Monitoring 是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机 进程中的类装载、内存、垃圾收集、 JIT 编译等运行数据。
jstat 可以参考: https://www.cnblogs.com/sxdcgaq8080/p/11089841.html
jmap:   JVM Memory Map 命令用于生成 heap dump 文件
jmap 可以参考: https://www.cnblogs.com/sxdcgaq8080/p/11089664.html
jhat:   JVM Heap Analysis Tool 命令是与 jmap 搭配使用,用来分析 jmap 生成的 dump jhat 内置了 一个微型的 HTTP/HTML 服务器,生成 dump 的分析结果后,可以在浏览器中查看
jhat 可以参考: https://www.cnblogs.com/baihuitestsoftware/articles/6406271.html  也可以使用 eclipse mat(Memory Analyzer)
jstack:   用于生成 java 虚拟机当前时刻的线程快照。
jstack 可以参考: https://www.jianshu.com/p/8d5782bc596e
jinfo:   JVM Confifiguration info 这个命令作用是实时查看和调整虚拟机运行参数
jinfo 参考: https://www.jianshu.com/p/8d8aef212b25
 
调优工具:
常用调优工具分为两类 ,jdk 自带监控工具: jconsole jvisualvm ,第三方有: MAT(Memory Analyzer
Tool) GChisto
jconsole Java Monitoring and Management Console 是从 java5 开始,在 JDK 中自带的 java 监控
和管理控制台,用于对 JVM 中内存,线程和类等的监控
jvisualvm jdk 自带全能工具,可以分析内存快照、线程快照;监控内存变化、 GC 变化等。
MAT Memory Analyzer Tool ,一个基于 Eclipse 的内存分析工具,是一个快速、功能丰富的 Java
heap 分析工具,它可以帮助我们查找内存泄漏和减少内存消耗
GChisto ,一款专业分析 gc 日志的工具
 
JVM 性能调优
设定堆内存大小
-Xmx :堆内存最大限制。
设定新生代大小。 新生代不宜太小,否则会有大量对象涌入老年代
-XX:NewSize :新生代大小
-XX:NewRatio 新生代和老生代占比
-XX:SurvivorRatio :伊甸园空间和幸存者空间的占比
设定垃圾回收器 年轻代用 -XX:+UseParNewGC 年老代用 -XX:+UseConcMarkSweepGC
- XX: MetaspaceSize= 512 M  - XX: MaxMetaspaceSize= 1024 M 设置元空间大小,jdk1.8以后这么设置,以前: - XX: PermSize= 512 M - XX: MaxPermSize= 1024 M
MetaspaceSize如果不做配置,通过jinfo查看默认MetaspaceSize大小(约21M),MaxMetaspaceSize很大很大,MetaSpace只受本地内存大小限制。
(MetaspaceSize表示metaspace首次使用不够而触发FGC的阈值,只对触发起作用,原因是:垃圾搜集器内部是根据变量_capacity_until_GC来判断metaspace区域是否达到阈值的,初始化代码如下所示:
void MetaspaceGC::initialize() {
  // Set the high-water mark to MaxMetapaceSize during VM initializaton since
  // we can't do a GC during initialization.
  _capacity_until_GC = MaxMetaspaceSize;}
 
 
GC收集器会在发生对metaspace的回收会,会计算新的_capacity_until_GC值,以后发生FGC就跟MetaspaceSize没有关系了)
*任何一个JVM参数的默认值可以通过java -XX:+PrintFlagsFinal -version |grep JVMParamName获取,例如:java -XX:+PrintFlagsFinal -version |grep MetaspaceSize
 
采用java -jar 启动系统
java -Xms512M -Xmx512M -Xmn256M -Xss1M -XX:PermSize=128M -XX:MaxPermSize=128M -jar app.jar
jvm的调优工具和参数_第1张图片
 
 
 
 

你可能感兴趣的:(jvm,优化参数,jvm,jvm优化)