博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内存(三):虚拟机性能监控与故障处理工具
阅读量:4984 次
发布时间:2019-06-12

本文共 2716 字,大约阅读时间需要 9 分钟。

JDK命令行工具

  • jps:虚拟机进程状况工具
    • 概念
      • JVMProcessStatusTool,显示指定系统内所有的HtoStop虚拟机进程
    • 功能:
      • 显示正在运行的虚拟机进程,虚拟机执行主类(main()函数所在的类)名称及本地虚拟机唯一ID(LVMID)。
      • 本地虚拟机进程: LVMID =  操作系统的进程ID(PID)
    • 命令
      • -q:只输出LVMID,省略主类名称
      • -m:输出虚拟机进程启动时传递给主类main()函数的参数
      • -l:输出主类的全名,如果进程执行的jar包,输出jar路径
      • -v:输出虚拟机进程启动时的jvm参数
  • jstat:虚拟机统计信息监视工具
    • 概念
      • JSVStatisticeMonitoringTool,显示虚拟机运行数据
    • 命令
      • -class:监视类装载,卸载数量,总空间以及类装载所耗费时间
      • -gc:监视java堆状况:Eden区,两个survivor区,老年代,永久代等的容量,已用空间,gc时间合计等信息
      • nterval:查询间隔
      • Count:查询次数
        • 默认:查询一次
        • 指定:每250毫秒查询一次,一共查询5次
      • -gccapacity:与-gc基本相同,关注java堆各个区域使用到的最大,最小空间
      • -gcutil:与-gc基本相同,关注已使用空间占总空间的百分比
      • -gccause:与-gcutil基本相同,额外输出导致上一次gc原因。
      • -gcnew:监视新生代gc的状况
      • -gcnewcapacity:与-gcnew基本相同,关注使用到的最大、最小空间
      • -gcold:监视老年代gc状况
      • -gcoldcapacity:与-oldgc基本相同,关注使用到的最大,最小空间
      • -compiler:输出jit编译器编译方法,耗时等信息
      • -printcompilation:输出已被jit编译的方法。
  • jinfo:Java配置信息工具
    • 概念
      • ConfigurationInfoForJava,显示虚拟机配置信息,实时查看和调整虚拟机各项参数。
    • 命令
      • -flags:查询未被显示指定的虚拟机参数(默认值)
      • -flag[+|-] name或者-flag name=value:修改一部分运行期可写的虚拟机参数值
        • 查看JVMGC相关参数值
        • 设置JVMGC相关参数值
      • -sysprops:查看Java系统参数(虚拟机进程System.getProperties()内容)
  • jmap:Java内存映像工具
    • 概念
      • MemoryMapfotJava,用于生成虚拟机的内存转储快照,heapdump文件或者dump文件。
      • 查询finalize执行队列,java堆和永久代详细信息
        • 如空间使用率,当前用的那种收集器等
    • 命令
      • -dump:生成java堆转储快照,格式-dump:[live, ]fomat=b, file=<filename>,
        • live子参数说明:是否只dump出存活的对象
      • -histo:显示堆中对象统计信息:类,实例变量,合计容量
      • Linux/Solaris平台下有效
        • -finalizeinfo:显示在F-Queue中等待Finalizer线程执行finalize方法的对象,
        • -heap:显示java堆详细信息,如使用哪种回收器,参数配置,分带情况等,
        • -permstat:以ClassLoder为统计口径显示永久代内存状态,
          • -F:当虚拟机进程对-dump选项没有响应时,可以使用这个选项强制生成dump快照。
  • jhat:虚拟机堆转储快照分析工具
    • 概念
      • JVMHeapDumpBrowser,与jmap命令搭配使用,用于分析heapdump文件,
      • 建立一个微型HTTP/HTML服务器,让用户可以在浏览器上查看分析结果。
      • 注:一般不会直接使用jhat来分析dump文件:一般不会再部署应用程序的服务器直接分析dump文件,
    • 命令
      • jhap XX.bin
        • 完毕后输入localhost:7000就可以查看分析结果,默认以包为单位进行分组显示。
  • jstack:Java堆栈跟踪工具
    • 概念
      • StackTraceforJava:显示虚拟机线程快照。用于生成虚拟机当前时刻的线程快照,
      • 一般称为threaddump或者javacore文件。
    • 命令
      • -F:当正常输出的请求不被响应时,强制输出线程堆栈
      • -l:除堆栈外,显示关于锁的附加信息
      • -m:如果调用本地方法的话,可以显示C/C++的堆栈
          • jdk1.5之中java.lang.Thread类增加了一个getAllStackTraces()方法:用于获取虚拟机中所有线程的StackTraceElement对象。
  • HSDIS:JIT生成代码反汇编:虚拟机规范中的描述逐渐成了虚拟机实现的概念模型:
    • 即实现智能保证规范描述等效

 JDK的可视化工具

  • JConsole:Java监视与管理平台
    • 概念
      • JConsole是一种基于JMX的可视化监视管理工具
      • 针对JMX MBean进行管理。由于MBean可以使用代码,中间件服务器的管理控制台或者所有符合JMX规范的软件进行访问
    • 使用
      • 1.启动:JConsole工具在JDK/bin目录下,
        • 启动JConsole后,将自动搜索本机运行的jvm进程,不需要jps命令来查询指定。
        • 双击其中一个jvm进程即可开始监控,也可使用“远程进程”来连接远程服务器。
      • 2内存监控
        • 概述:显示整个虚拟机主要运行数据的概览
        • 内存:相当于可视化的jstat命令,用于监视受收集器管理的虚拟机内存的变化趋势
        • 线程:相当于可视化的Jstack命令,遇到线程停顿时可以使用这个页签进行监控
      • 线程长时间停顿的主要原因
        • 1.等待外部资源(数据库链接,网络资源,设备资源等)
        • 2.死循环
        • 3.锁等待(活锁,死锁)
          • 死锁可激活:正常活锁等待
          • 死锁无法激活
  • VisualVM:
    • 概述
      • 多合一故障处理工具 VisualVM是一个集成多个JDK命令行工具的可视化工具。
      • VisualVM基于NetBeans平台开发,具备了插件扩展功能
      • VisualVM在JDK/bin目录下。
    • 作用:
      • 1.显示虚拟机进程以及进程的配置
      • 2.监视应用程序的CPU,GC,堆,方法区以及线程的信息
      • 3.dump自己分析堆转存快照(jmap,jhat)
      • 4.方法级的程序运行性能分析,找出被调用最多,运行时间最长的方法
      • 5.离线传恒旭快照,收集程序的运行时配置,线程dump,内存dump等信息建立一个快照。可以将快照发送给开发者处进行bug反馈
      • 6.其他plugins的无限可能性

转载于:https://www.cnblogs.com/lllllht/p/9177362.html

你可能感兴趣的文章
swift 自定义TabBarItem
查看>>
Android 仿网易新闻v3.5:上下滑动的引导页
查看>>
php解析二维码
查看>>
Fragment 的生命周期及使用方法详解
查看>>
注意错误zoj2110-Tempter of the Bone
查看>>
Android中级第八讲--安卓子线程,以及定时任务使用讲解
查看>>
一对多的两个表,查询主表的信息和主表在子表中的记录条数
查看>>
主题演讲:未来新趋势电动车
查看>>
常用DNS列表(电信、网通)
查看>>
LeetCode-178:分数排名
查看>>
转:退火算法 Simulate Anneal Arithmetic (SAA,模拟退火算法)
查看>>
Django电商项目---完成商品主页显示day2
查看>>
如何解决文章格式化编辑器win7 64位下找不到Comctl32.ocx
查看>>
核心动画-翻页效果的实现
查看>>
微信小程序弹出框 页面依然可以滑动的解决
查看>>
$.ajax同域请求,跨域请求的解决方案
查看>>
octave操作
查看>>
【Python】安装Python的mysql模块
查看>>
【Python】在控制台输出不同颜色的文字
查看>>
js 获取gridview 点击行每个单元格的值
查看>>