Java程序内存分析Java VisualVM(Visual GC)

本文介绍了Java VisualVM工具,它是一款集成了多种JDK命令行工具的可视化应用,用于性能分析和调优。文章重点讨论了Visual GC插件,用于监控垃圾回收器,并详细阐述了堆内存的分代情况。通过分析GC的基本概念,如Minor GC和Full GC,以及如何使用jstat、jmap等命令检查内存状况,帮助理解内存管理。此外,还介绍了VisualVM的快照功能、线程和CPU分析,以及堆转储和线程转储的生成与分析,为Java应用程序的性能优化提供指导。
摘要由CSDN通过智能技术生成

VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。

在内存分析上,Java VisualVM的最大好处是可通过安装Visual GC插件来分析GC(Gabage Collection)趋势、内存消耗详细状况。


一  Visual GC(监控垃圾回收器)

Java VisualVM默认没有安装Visual GC插件,需要手动安装JDK的安装目录的bin目露下双击jvisualvm.exe,即可打开Java VisualVM,点击菜单栏 工具->插件 安装Visual GC

wKiom1VUeQiyixcuAAMnGJdLLuU385.jpg



安装完成后重启Java VisualVM,Visual GC界面自动打开,即可看到JVM中堆内存的分代情况

wKiom1VUfh3QOdwoAAR5bOWPUSQ180.jpg



被监控的程序运行一段时间后Visual GC显示如下

wKiom1VUih3zWsSPAAXS4juKDgs487.jpg


要看懂上面的图必须理解Java虚拟机的一些基本概念:

堆(Heap) :JVM管理的内存叫堆


分代:根据对象的生命周期长短,把堆分为3个代:Young,Old和Permanent,根据不同代的特点采用不同的收集算法,扬长避短也。

  1. Young(年轻代)
    年轻代分三个区。一个Eden区,两个Survivor区。大部分对象在Eden区中生成。当Eden区满时,还存活的对象将被复制到Survivor区(两个中的一个),当这个Survivor区满时,此区的存活对象将被复制到另外一个Survivor区,当这个Survivor区也满了的时候,从第一个Survivor区复制过来的并且此时还存活的对象,将被复制“年老区(Tenured)”。需要注意,S

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值