VisualVM是集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump、Thread Dump、内存对象实例情况、GC执行情况、CPU消耗以及类的装载情况。在JDK Update7之后,VisualVM作为JDK的一部分发布,但同时VisualVM也发布独立的版本。VisualVM必须运行在JDK1.6以上的VM环境下,但可以用它来监控JDK1.4以上的JVM。
    1:创建java工程VisualvmTest,写一个消耗内存的测试代码:

Java代码  
  1. public class MemoryLeak {
  2. public static void main(String[] args) throws InterruptedException {
  3. int MAX_CONSUMERS = 10000;
  4. int SLEEP_BETWEEN_ALLOCS = 5;
  5. ConsumerContainer objectHolder = new ConsumerContainer();
  6. while (objectHolder.size() < MAX_CONSUMERS) {
  7. System.out.println("Allocating object "
  8. + Integer.toString(objectHolder.size()));
  9. objectHolder.add(new MemoryConsumer());
  10. try {
  11. Thread.currentThread().sleep(SLEEP_BETWEEN_ALLOCS);
  12. } catch (InterruptedException ie) {
  13. // Do nothing.
  14. }
  15. } // while.
  16. Thread.sleep(1000*60*60);
  17. } // main.
  18. } // End of MemoryLeak.
  19. class ConsumerContainer extends Vector {
  20. }
  21. class MemoryConsumer {
  22. public static final int MEMORY_BLOCK = 1024;
  23. public byte[] memoryHoldingArray;
  24. MemoryConsumer() {
  25. memoryHoldingArray = new byte[MEMORY_BLOCK];
  26. }
  27. } // End MemoryConsumer.
public class MemoryLeak {public static void main(String[] args) throws InterruptedException {int MAX_CONSUMERS = 10000;int SLEEP_BETWEEN_ALLOCS = 5;ConsumerContainer objectHolder = new ConsumerContainer();while (objectHolder.size() < MAX_CONSUMERS) {System.out.println("Allocating object "+ Integer.toString(objectHolder.size()));objectHolder.add(new MemoryConsumer());try {Thread.currentThread().sleep(SLEEP_BETWEEN_ALLOCS);} catch (InterruptedException ie) {// Do nothing.}} // while.Thread.sleep(1000*60*60);} // main.} // End of MemoryLeak.class ConsumerContainer extends Vector {
}class MemoryConsumer {public static final int MEMORY_BLOCK = 1024;public byte[] memoryHoldingArray;MemoryConsumer() {memoryHoldingArray = new byte[MEMORY_BLOCK];}
} // End MemoryConsumer.

2:在MemoryLeak.java右键菜单选择【Profile As】->【Java Application】,在弹出如下窗口,选择【memory】.

3:程序开始启动运行,同时弹出visualvm窗口,如下图,【profile】tab可以看到对象大小比例。【监控】可以看到对的运行走向。

4:可以发现byte数组暂用比较大。在byte[]右键菜单选择【生成快照并显示栈分配跟踪】。能够快速定位在什么地方消耗比较大的内存,能够快速解决问题:

参考资料: VisualVM远程监控

MyEclipse Profile 结合visualvm 监控内存泄露相关推荐

  1. 内存泄露(十)-- KOOM(高性能线上内存监控方案)

    KOOM介绍 OOMMonitor 介绍 KOOM线上APM监控最全剖析 一文看懂快手KOOM高性能监控方案 KOOM 浅析 [开源库剖析]KOOM V1.0.5 源码解析 目录 KOOM 功能 1. ...

  2. 进入Xcode4,选择菜单“Product”-“Profile”,快捷键Command+I 监测内存泄露

    进入Xcode4,选择菜单"Product"->"Profile",快捷键Command+I 监测内存泄露 转载于:https://blog.51cto. ...

  3. java 监控 native 内存_JVM NativeMemoryTracking 分析堆外内存泄露

    Native Memory Tracking (NMT) 是Hotspot VM用来分析VM内部内存使用情况的一个功能.我们可以利用jcmd(jdk自带)这个工具来访问NMT的数据. NMT介绍 工欲 ...

  4. java 内存泄露监控,Linux下实用的JAVA内存泄露监控命令

    内存泄露一直是比较头疼的事情,下面三个命令我个人觉得相当有用. 1.jstack (linux下特有) 可以观察到jvm中当前所有线程的运行情况和线程当前状态 jstack 2083 输出内容如下: ...

  5. 安装Java Visualvm监控堆内存和参数说明

    安装Java Visualvm监控堆内存和参数说明 1.概述 这篇文章介绍使用Java Visualvm工具监控堆内存VisualGC插件的安装以及监控堆内存参数说明. 摘要 VisualGC插件安装 ...

  6. 生产环境Go程序内存泄露,用pprof如何快速定位

    内存泄漏可以在整个系统中以多种形式出现,除了在写代码上的疏忽,忘了关闭该关闭的资源外,更多的时候导致系统发生内存泄露原因可能是设计上决策不对.或者业务逻辑上的疏忽没有考虑到一些边界条件. 比如查数据库 ...

  7. 记一次线上JVM原生系统内存泄露排查

    目录 问题报告 应用概况 初步分析 Java堆内存,MetaSpace等使用情况 Java堆外内存分析 进程原生内存分析(Native Memory) 原生内存详细分析 内存内容分析 引入jemall ...

  8. 7种内存泄露场景和13种解决方案

    什么是内存泄露 什么是内存泄露,通俗的来说就是堆中的一些对象已经不会再被使用了,但垃圾收集器却无法将它们从内存中清除. 内存泄漏很严重的问题,因为它会阻塞内存资源并随着时间的推移降低系统性能.如果不进 ...

  9. 用 Go STL 查询 DB 引发的内存泄露

    本文字数:5295 字 精读时间:10 分钟 也可在 5 分钟内完成速读 问题起因 这几天有一个 Go API service 经过定时监控发现占用的内存不断上涨,内存从初始的 70M 一直上升到超过 ...

最新文章

  1. 【硬件基础】制作直流电源
  2. 微软CEO纳德拉对话沈向洋:那些未来可期的计算机视觉研究与应用
  3. socket.io 之 engine.io
  4. 微软 Excel 365 里如何设置下拉菜单和自动高亮成指定颜色
  5. Java 9迁移指南:七个最常见的挑战
  6. 我的世界pe开服务器网站,我的世界pe服务器怎么开 开服图文教程
  7. 分支限界算法c语言_算法分析
  8. 【聚类分析】基于matlab交通干道车流量FCM聚类分析及预测【含Matlab源码 1141期】
  9. VMware pro 14
  10. 智慧城市网络安全建设框架及实践
  11. 哈勃分析系统解密:中招敲诈木马不用交赎金
  12. 2020-12-06 高等数学:常用积分公式
  13. Alibaba Cloud Linux 等保 2.0 三级版操作系统详解
  14. 两向量点乘坐标运算_向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读...
  15. 到底买苹果XS还是XR_iPhone XS和iPhone XR买哪个好?苹果XR和XS区别对比测评
  16. BottomNavigationView+ViewPager+Fragment 底部导航按钮
  17. 读懂LaTeX中cls文件
  18. [ecshop 资料] ecshop 手机 自动识别 ua 自动跳转到手机版本 miqinew ecmoban
  19. 小米路由器与edge109版本的问题
  20. C语言 —— 多维数组

热门文章

  1. 计组之数据运算:12、加法器设计
  2. 计算机网络之数据链路层:3、差错控制(奇偶校验、CRC冗余校验、海明校验)
  3. 基础编程题之二进制插入(位运算)
  4. Redis 哨兵模式
  5. 树:二叉树的内存拷贝和内存释放
  6. SqoopFlume、Flume、HDFS之间比较
  7. python2.7升级到python3.6注意事项
  8. HTML5 2D平台游戏开发#4状态机
  9. FunDA(7)- Reactive Streams to fs2 Pull Streams
  10. Train Problem II 卡特兰裸题(入门题)