有个java程序越跑越慢,如何排查?

首先通过jps找到java进程ID。然后top -p [pid]发现内存占用达到了最大值(-Xmx)。开始怀疑是由于频繁Full GC导致的,于是通过jstat -gcutil [pid] 60000查看GC的情况,其中60000表示每隔1分钟输出一次。果然是Full GC次数太多,JVM大部分时间都进行Full GC,而此时JVM会暂停其他一切工作,所以程序运行得非常慢。

那到底的程序的哪一部分导致消耗了这么多的内存呢?通过jmap -histo:live [pid]查看进程中各种类型的对象创建了多少个,以及每种类型的对象占多少内存。当我看到有个对象被创建了5千多万个实例时,我就能定位到是哪儿的问题了。

顺带说一下,通过jmap还可以生成JVM的内存dump文件,命令为jmap -dump:format=b,file=文件名 [pid],然后通过jhat命令在浏览器中查看,或者通过jvisualvm、eclipse memory analyzer等工具进行查看。使用jhat命令查看的方式为:jhat -J-Xmx1024M [file],等控制台输出Started HTTP server on port 7000. Server is ready.后在浏览器中输入ip:7000就可以查看各上类中各种实例被创建了多少个。

java程序内存泄漏排查相关推荐

  1. java程序内存泄漏场景及预防

    为什么80%的码农都做不了架构师?>>>    虽然jvm有垃圾回收机制,如果程序编写不注意某些特定规则,仍然会导致java程序内存泄漏,最终可能出现OutOfMemory异常. 1 ...

  2. 一次恐怖的 Java 内存泄漏排查实战

    转载自  一次恐怖的 Java 内存泄漏排查实战 最近在看<深入理解Java虚拟机:JVM高级特性与最佳实践>(第二版)这本书,理论+实践结合,深入浅出,强烈推荐给大家. 这两天对JVM内 ...

  3. haddler处理队列 netty_Netty堆外内存泄漏排查,这一篇全讲清楚了

    上篇文章介绍了Netty内存模型原理,由于Netty在使用不当会导致堆外内存泄漏,网上关于这方面的资料比较少,所以写下这篇文章,专门介绍排查Netty堆外内存相关的知识点,诊断工具,以及排查思路提供参 ...

  4. java static内存泄漏_Java中的内存泄漏

    内存泄漏是指不再使用的对象持续占有内存空间而得不到及时释放,从而造成内存空间的浪费称为内存泄漏.比如,长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄漏,尽管短生命周期对象已经不再需要,但是 ...

  5. Java的内存泄漏和垃圾回收机制

    JAVA会产生内存泄露吗?首先,答案是肯定的. Java尽管有垃圾回收器,但依旧存在泄漏. Java内存泄漏跟C/C++内存泄漏的概念不一样:C/C++的内存泄漏是指Malloc了一些资源.最后没有f ...

  6. 使用Java创建内存泄漏

    我刚刚接受采访,并被要求使用Java造成内存泄漏 . 不用说,我对如何开始创建它一无所知. 一个例子是什么? #1楼 最近,我遇到了一种更细微的资源泄漏. 我们通过类加载器的getResourceAs ...

  7. 异常连接导致的内存泄漏排查

    目录 异常连接导致的内存泄漏排查 背景 详细流程 使用windbg分析dump文件 使用wireshark抓包分析 完成端口和重叠IO 重叠I/O 完成端口 Reactor模型与Proactor模型 ...

  8. C++内存泄漏排查以及几个工具

    近期排查老项目App的偶发闪退问题过程中,发现程序竟然有内存泄漏的情况,表现为连续运行多天后程序占用的虚拟内存和物理内存都会持续升高,经过排查修改,找出了多处内存泄漏,现对排查过程做个小结. 内存泄漏 ...

  9. 记一次SOFA内存泄漏排查过程

    记一次内存泄漏排查过程 起因 某天中午大家还在安静的午休,睡得正香的时候突然被一阵手机滴-滴滴直响短信惊醒.一看是应用的服务器告警并且对应服务的所有机器都在告警"健康检查失败,自动拉下线&q ...

  10. iOS 内存泄漏排查方法及原因分析

    级别: ★★☆☆☆ 标签:「iOS」「内存泄漏排查」「Leaks工具」 作者: MrLiuQ 审校: QiShare团队 本文将从以下两个层面解决iOS内存泄漏问题: 内存泄漏排查方法(工具) 内存泄 ...

最新文章

  1. C++ leetcode 26. 删除排序数组中的重复项 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
  2. HTML CSS JS之间的关系
  3. git 使用_git使用指南
  4. HarmonyOS之数据管理·分布式文件服务的应用
  5. 查询mysql视图_MySQL数据库简介及常用命令
  6. 卷积为什么如此强大?一文全解深度学习中的卷积
  7. ArcGIS 10.2加载在线影像底图
  8. elasticsearch设置为windows系统服务
  9. 安装xmanager linux系统,安装Xmanager登陆Linux操作系统[图文]
  10. mysql-installer-community-5.5.29.0.msi 下载
  11. c语言标准库详解(一):stdio.h之文件操作
  12. 实现企业微信机器人自动发消息
  13. 求解会议安排问题 C++实现
  14. html图片加水印元素,使用HTML5 Canvas给图片加水印效果
  15. U3D DotH教程
  16. IEEE-754标准与浮点数运算
  17. 计算机毕业设计之SSM的医院挂号就诊系统
  18. 不是所有码农都有货之Java 实例 - 数组并集
  19. 解决nginx访问问题connect() to 127.0.0.1:8000 failed (25: Permission denied) while connecting to upstream,.
  20. python模拟各大网站登陆方式,以及一些爬虫程序, 麻麻再也不用担心我学爬虫啦!...

热门文章

  1. 总结一些Android好用的开源库
  2. PHP书写规范 PHP Coding Standard
  3. Spring AOP的实现思想之动态代理
  4. 2018.10.24-day3 python总结
  5. A1113 | Integer Set Partition (25)
  6. Android开发技术周报 Issue#38
  7. 记录HttpWebRequest辅助类
  8. 实现web版用户注册(可以上传头像)
  9. asp:树型select菜单
  10. 那些不需要你知道的Chrome DevTool - 使用技巧篇