三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析

推荐阅读:

  • 基于SSM+Shiro+Layui+Easyui权限管理系统
  • 超详细的MySQL工作原理 体系结构
  • OAuth2.0分布式系统环境搭建
JVM参数所谓的JVM调优说白了就是去设置一个合理的 , 适合当前系统的JVM所提供的参数 。 从总体上来说JVM参数可以分为三大类:标准参数 , -X参数 , -XX参数 。
标准参数以“-”开头的参数称之为标准参数 , 标准参数是任何一个JDK版本都支持的参数 , 比较稳定 , 一般不会随着jdk版本的变化而变化 。 比如:
-version-help-server-cp-X参数以-X开头的参数是在特定版本HotSpot支持的命令 , jdk版本变化之后 , 参数可能会发生变化 。 这个参数用的比较少 。 如以下几种:
-Xint解释执行-Xcomp第一次使用就编译成本地代码-Xmixed混合模式 , JVM自己来决定这种参数用的比较少 , 了解就可以了 , 在这里不做演示
-XX参数-XX是一种不稳定的参数 , 下一个版本可能会取消 。 -XX是JVM调优时的主要参数 。 -XX参数分为Boolean型和非Boolean型 。
Boolean型Boolean类型的-XX参数使用格式为:
-XX:[+-]+或-表示启用或者禁用name属性如:
-XX:+UseConcMarkSweepGC表示启用CMS类型的垃圾回收器-XX:+UseG1GC表示启用G1类型的垃圾回收器-XX:+PrintFlagsFinal表示打印出所有的JVM参数信息打印所有JVM参数我们用-XX:+PrintFlagsFinal去打印一下所有的参数出来看一下:任意新建一个Java类:
package com.zwx.jvm;public class TestJVMParam {public static void main(String[] args) {System.out.println(11);}}本人用的是IntelliJ IDEA工具 , 选择:Run–>Edit Configurations , 然后点击左边的+号 , 选择Application , 出现如下所示界面 , 加入JVM参数:
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析然后运行main方法 , 就会打印出所有参数(有700多个):
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析注意:上图中打印出来的参数中“=”表示默认值 , “:=”表示被用户或JVM修改后的值
非Boolean型非Boolean类型的-XX参数的使用格式为:
-XX=name表示属性 , value表示属性对应的值如:
-XX:MaxMetaspaceSize=5M设置最大永久代空间大小(jdk1.8)其他参数还有其他一些我们非常常用的参数 , 比如:-Xms , -Xmx , -Xss , 但是实际上这几种参数也是属于-XX参数 , 这几种写法不过就是一种为了方便而设置的简写形式 。 所以在上面打印出来的参数中搜索-Xms , -Xmx , -Xss是搜索不到的 。
-Xms1000等价于-XX:InitialHeapSize=1000-Xmx1000等价于-XX:MaxHeapSize=1000-Xss100等价于-XX:ThreadStackSize=100常用JVM参数
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析常用命令监控工具jdk中的bin目录下提供了许多功能强大的工具可以帮助我们监控虚拟机的使用情况 , 掌握了这些常用工具的使用可以帮助我们更快更直观的分析问题 。
工具和参数都是在不断使用的过程中掌握的 , 并不需要一下子就全部看完 , 可以大致浏览有个印象 , 建议大家可以收藏本篇文章 , 后续需要用到的时候方便查看
以下的演示均是基于linux环境下jdk1.8版本进行演示 , 不能环境和版本可能会有较大差异 。


推荐阅读