| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 可视化虚拟机工具VisualVM和Jconsole -> 正文阅读 |
|
[Java知识库]可视化虚拟机工具VisualVM和Jconsole |
目录 开篇介绍:?????????生产环境中直接排查JVM的话,使用适当的虚拟机监控和分析的工具可以加快我们分析数据、定位解决问题的速度。本博文重点介绍Jconsole和VisualVM工具的使用。 一、本地Jconsole远程连接阿里云服务先配置环境变量:
配置介绍: hostname 阿里云公网IP jmxremote.port和rmi.port 连接时候所使用的端口号,自定义。阿里云的话记得在安全组中开放这个。 配置好后,source /etc/profile 立即让配置生效 然后启动jar包 ?在本地cmd中输入jconsole,在弹出来的控制台上填写远程进程信息: ?二、先看本地Jconsole内存监控验证启动程序main,并连接上服务
看看堆内存的使用 随着时间加大,堆使用量持续增长,因为循环过程中一直在堆中创建对象在方法体中有引用,无法回收,一直增大 老年代也在不断增长? Eden区 占满的时候会发生复制 ,所以增长会呈现折现的方式? 持续增加下,就发生Java heap space java.lang.OutOfMemoryError: Java heap space 堆溢出?错误的原因, 很多时候, 就类似于将 XXL 号的对象,往 S 号的 Java heap space 里面塞? ? ?三、再看本地Jconsole线程验证线程状态waiting、timeWaiting 死锁情况的模拟
线程一,二是死锁的状态 ?WAITING 一个正在无限期等待另一个线程执行一个特别的动作的线程处于这一状态: ??TIMED_WAITING 一个正在限时等待另一个线程执行一个动作的线程处于这一状态: ?Blocked状态与Waiting状态的区别: WAITING 状态属于主动地显式地申请的阻塞,BLOCKED 则属于被动的阻塞 四、idea -VisualVM插件安装VisualVM是什么? ????????VisualVM是一个集成命令行JDK工具和轻量级分析功能的可视化工具 第一步:在IDEA安装VisualVM插件,File-> Setting-> Plugins -> Browers Repositrories 搜索VisualVM Launcher安装并重启IDEA ?第二步:点击配置VisualVM executable执行路径 ?idea右侧上方多了2个按钮: ?然后正常启动程序,会发现 有个弹窗出来了 ?运行段错误代码,然后堆dump下,再看看耗费的实例数:
?可以通过这种方式来看实际运行服务中具体是哪个对象占用的实例数很大。 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:24:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |