本文非原创,翻译自Java Garbage Collection Monitoring and Analysis
在Java中为对象分配和释放内存空间都是由垃圾回收线程自动执行完成的。和C语言不一样的是Java程序员不需要手动写垃圾回收相关的代码。这是使得Java如此流行,同时也是Java能帮助程序员写出更好的Java应用的优点之一。

在这篇Java垃圾回收系列文章中,让我们看下一些监控和分析垃圾回收的工具。然后用工具尝试监控和分析一个例子。

Java垃圾回收监控和分析工具

  • Java VisualVM

  • Naarad

  • GCViewer

  • IBM Pattern Modeling and Analysis Tool for Java Garbage Collector

  • HPjmeter

  • IBM Monitoring and Diagnostic Tools for Java – Garbage Collection and Memory

  • Visualizer

  • Verbose GC Analyzer

Java VisualVM

Java VisualVM是在Java SE SDK安装时免费提供的。看下你的Java JDK安装目录下的/bin目录,Javajdk1.8.0bin。此目录下有许多其他工具包括javac和java工具,jvisualvm就是其中一个。

Java VisualVM对运行中的Java应用提供了可视化的信息展示。它是很多工具的整合包,像工具JConsole,jstat,jinfo,jstack以及jmap现在都是Java VisualVM的一部分。

Java VisualVM可以用来 - 生成和分析堆内存的dump - 观察和操作MBeans - 监控垃圾回收 - 内存和CPU性能分析

Launch VisualVM

jvisualvm已经包含在了JDK的bin目录下,如果以设置环境变量path,则可以直接在命令行中运行jvisualvm,将出现如下启动界面

安装Visual GC插件

我们需要安装visual GC 插件才能有个堆Java GC线程的漂亮和有价值的视觉感受。在上面的启动界面中点击工具->插件->可用插件->Visual GC

(不知道什么原因,这张图片就是上传不成功,只有附上外链地址将就看了,抱歉)

安装。

监控GC

现在可以监控垃圾回收过程了。开启你的Java应用程序,Java VisualVM会自动检测并将其显示到界面上。在左边“应用程序”面板的“本地”节点下面,所有本地运行的Java应用都会被列举出来。

Java VisualVM自己本身也是一个Java应用程序,因此它自身也被列了出来。作为本文的目的我们将监控VisualVM应用本身的GC过程。

双击“本地”节点下的VisualVM图标。

这样应用程序的监控面板会在右边打开。面板上有多个标签,每个里面展示了与应用程序性能相关的方面。由于我们现在主要关注“Visual GC”,so,点之。

上面的图片显示了Old,Eden,S0,S1使用的内存空间。下面的图表显示了各个部分申请和释放内存的详细信息。它以设定的刷新频率不停地跟新。

上图显示的是一个正常运行的程序。当发生内存泄露或者不正常的操作时,可以从图形本身明显地看出来。至少我们可以知道程序中存在和对象内存分配和垃圾回收相关的问题。然后利用其他标签如“Threads”中提供的信息和Thread Dump我们可以缩小发生问题的范围。

在“监视”标签中,我们可以看到以时间线发展的内存使用概况图。这里有个“执行垃圾回收”按钮可以调用垃圾回收过程。

在“抽样器”标签中我们可以开始内存和CPU分析工作。抽样器会实时显示各个实例的使用情况。它可以帮助确定性能问题到底发生在哪里。

到此为止,关于Java 垃圾回收的系列文章已经完结了。

细述 Java垃圾回收机制→Java Garbage Collection Monitoring and Analysis相关推荐

  1. 百无聊赖之JavaEE从入门到放弃(四)垃圾回收机制(Garbage Collection)

    目录 一.垃圾回收原理和算法 1.内存管理 2.垃圾回收过程 3.垃圾回收相关算法 二.通用的分代垃圾回收机制 1.年轻代 2.年老代 3.永久代 4.三种GC 三. JVM调优和Full GC 四. ...

  2. python面试题之简要描述Python的垃圾回收机制(garbage collection)

    这里能说的很多.你应该提到下面几个主要的点: Python在内存中存储了每个对象的引用计数(reference count).如果计数值变成0,那么相应的对象就会小时,分配给该对象的内存就会释放出来用 ...

  3. Java深度历险(四)——Java垃圾回收机制与引用类型

    Java语言的一个重要特性是引入了自动的内存管理机制,使得开发人员不用自己来管理应用中的内存.C/C++开发人员需要通过malloc/free 和new/delete等函数来显式的分配和释放内存.这对 ...

  4. JAVA垃圾回收机制GC之我姐是明星

    JAVA垃圾回收机制GC(Garbage Collection) 工作面试老伙伴之java垃圾回收机制 什么是GC,为什么要GC(我的明星老姐) 判断垃圾(找到不常穿的衣服) A 引用计数算法 B 可 ...

  5. 转:java垃圾回收机制最好的解析

    以下转自:https://www.cnblogs.com/likehua/p/4023667.html 很多Java面试的时候,都会问到有关Java垃圾回收的问题,提到垃圾回收肯定要涉及到JVM内存管 ...

  6. 细述 Java垃圾回收机制→How Java Garbage Collection Works?

    本文非原创,翻译自How Java Garbage Collection Works? 在Java中为对象分配和释放内存空间都是由垃圾回收线程自动执行完成的.和C语言不一样的是Java程序员不需要手动 ...

  7. Java垃圾回收机制(Garbage Collection)

    引用博客地址:http://www.cnblogs.com/ywl925/p/3925637.html 以下两篇博客综合描述Java垃圾回收机制 第一篇:说的比较多,但是不详细 http://www. ...

  8. Java垃圾回收机制总结

    Java垃圾回收机制 垃圾回收(GC,Garbage Collection)是 Java 虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象所占据的内存空间的一种机制.注 ...

  9. java垃圾回收机制_笔记 | Java垃圾回收机制

    本文经授权转载自程序员杂货铺(ID:speakFramework) 垃圾回收 最近上海的小伙伴是不是要被强垃圾分类搞疯了???哈哈哈哈 上海是个走在前列的城市啊,不光骑自行车闯红灯要被罚钱,垃圾不分类 ...

最新文章

  1. 洛谷 P5057 [CQOI2006]简单题(树状数组)
  2. wadl 的自动生成(cxf版本3.1.1)
  3. tp 5 封装微信网页授权基础类库
  4. firefox与ie 的javascript区别
  5. 小小的 likely 背后却大有玄机!
  6. Android Studio开启虚拟机报错!emulator: ERROR: x86 emulation currently requires hardware acceleration!解决办法梳理
  7. python连接oracle的几种方式
  8. Spring Boot基础学习笔记23:用户自定义授权管理
  9. 阿里巴巴的AI都能做英文阅读理解了 你还不赶快多背几个单词?
  10. 名企面试官精讲典型编程题之C++篇
  11. C Primer Plus 第十四章学习总结……2015.5.17
  12. 斗音视频制作技巧和分享技巧
  13. 从Java程序运行的角度分析JDK1.8下JVM的内存区域划分及变量存储
  14. 集成钉钉机器人消息通知
  15. 【FFmpeg】通过编解码ID(AV_CODEC_ID_*)获取编解码器AVCodec指针的过程分析
  16. 手把手教你清理 windows C盘文件
  17. deepin操作系统安装oracle xe数据库(非docker版)
  18. c/c++ int数组初始化/重置为0
  19. 2021了,前端,移动开发,后端,我该选哪个?
  20. 关闭谷歌更新提示“若要接收后续 google chrome 更新,您需使用 windows 10或更高版本”

热门文章

  1. 大脑简史(2)-研究大脑的手段
  2. AI论文引用排行榜丨微软第一,清华第九;Alphabet董事长看AI:美国仅领先5年,大陆追赶速度快;
  3. 2016全球教育机器人发展白皮书
  4. 化解谷歌AI霸权的另一种思路?开发平台的生态围剿
  5. 我在互联网大厂,和同事谈恋爱
  6. 程序员弃码投中医?还做成了不错的生意! | 极客视频
  7. 实锤了!史上最惨的新浪程序员
  8. 代码攻击破坏设备,炸毁 27 吨发电机的背后
  9. 20 年坚守,不忘初心!一封来自程序员的感谢信!
  10. MySQL InnoDB锁