码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JDK自带JVM分析工具


    一、JDK自带工具盘点:

    jstat:性能分析-查看gc情况;

    jmap:内存分析-堆信息;

    jstack:线程分析-栈信息;

    jinfo:参数查看及配置;

    jstatd:启动jvm监控服务。它是一个基于rmi的应用,向远程机器提供本机jvm应用程序的信息。默认端口1099;

    jdb :JDB是基于文本和命令行的调试工具;

    jhat:用于对JAVA heap进行离线分析的工具,他可以对不同虚拟机中导出的heap信息文件进行分析,如LINUX上导出的文件可以拿到WINDOWS上进行分析,可以查找诸如内存方面的问题;

    jps : jps是用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等;

    jconsole:是基于JAVA Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了JAVA程序的内存使用,堆和线程信息,类的分配状态和空间使用、检测死锁等;

    JVisualVM: jvisualvm是jdk1.6以后带上的工具,是升级版的jconsole,且支持插件拓展;

    jstat、jmap、jstack、jdb、jconsole都是1.6之前,之后JVisualVM替代。所以,JDK自带工具则只要使用jps、jVisualVM和jStatd即可。

    二、常用工具使用

    jps:

    jStatd:

    jstatd只能够监控具有适当的本地访问权限的JVM。因此,jstatd进程必须以与目标JVM相同的用户凭证来运行。

    jVisualVM:

    安装插件: 插件市场:VisualVM: Plugins Centers 

    点击线程可以查看是否检查到死锁的状态

    查看堆:

    查看GC: 

    搭档jstatd远程监控:

    cd /usr/local/java/jdk1.8.0_311/jre/lib/management

    cp jmxremote.password.template jmxremote.password

    chmod 644 jmxremote.password

    再到java的bin目录下创建一个文件jstatd.all.policy,内容为

    grant codebase "file:/usr/local/java/jdk1.8.0_311/lib/tools.jar" {
    permission java.security.AllPermission;
    };

    启动服务

    jstatd -J-Djava.security.policy=/usr/local/java/jdk1.8.0_311/bin/jstatd.all.policy  -p 1099 &

    验证启动成功:

    netstat -anp |grep jstatd

    注意:云服务器记得除了1099外还需开启对应的端口访问权限 

    打开JvisualVM,右键远程,添加服务器主机,高级设置或添加jstatd链接默认端口1099,则等待自动刷新即可显示。

    对应版本官方手册:Java Platform, Standard Edition Documentation - Releases

  • 相关阅读:
    动态分区算法(头歌实验)第1关:首次适应算法。第2关:最佳适应算法。
    Java Heap Space问题解析与解决方案(InsCode AI 创作助手)
    【Flutter--实战】Flutter 简介
    [附源码]SSM计算机毕业设计在线购物系统JAVA
    爬虫面试手册
    Spring WebFlux使用函数式编程模型构建异步非阻塞服务
    全局JSON序列化导致prometheus数据格式错乱
    vue3+koa+axios实现前后端通信
    SpringBoot项目将Nacos作为配置中心与注册中心,微服务启动失败
    QT 智能指针 QPointer QScopedPointer QSharedPointer QWeakPointer QSharedDataPointer 隐式共享 显示共享
  • 原文地址:https://blog.csdn.net/m0_37840000/article/details/126010757
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号