摘要:一问一答的形式轻松学习掌握java工具。

以一问一答的形式学习java工具

Q:检查内存泄露的工具有?

A: jmap生成dump转储文件,jhat可视化查看。

Q:某进程CPU使用率一直占满,用什么工具可以排查?

A:

top -Hp pid找到最占CPU的线程

然后jstack来查找那个线程此时所处的堆栈,确定问题发生位置。

§ 各工具详细介绍

§ jstack

全称: JVM Stack Trance

作用: 查看某个java进程的堆栈情况, 可用于确认死锁、IO等待、死循环等问题。

命令用法:

jstack pid

查看死锁例子如下图,找到wait的lock和已被锁的lock

查看等待IO例子:

§ jstat

全称:

作用:

查看进程中内存使用情况,但只能给出一些简单统计数据

统计加载了多少类以及占用空间 jstat -class pid

统计编译了多少文件 jstat -compiler 10

Q: jstat -gcutil {pid} 2000 可以每隔2秒,对pid进程打印内存使用统计信息。

gcutil的输出如下

里面哪个百分比如果长期处于99%-100%会有OMM风险?(OutOfMemoryError)

A:

如果E和O即新生代、老年代内存区一直都处于满的状态,则很有可能会引发OMM风险。就像下面这个。

§ jmap

全称: JVM Memory Map

作用:生成进程的内存堆快照

当需要看一下进程里是什么东西占用了过多内存时, 可以用jmap打印一下堆快照。

命令用法:

打印堆快照: jmap -dump:file=./dumpfile.dump 进程pid

查看特定类所占用的情况: jmap -histo:live 进程pid | grep 类名

Q: 用jmap检查内存泄漏实例

我分了3次,每个1h调用jmap查看进程的内存实例,查看该时刻各对象数量

第一次查看情况如下:

第二次隔了2各小时,查看情况如下:

请问哪个对象可能有内存泄漏风险?

A:

ObjectA可能有泄露, 因为他的对象数量增加最快,说明对象一直在增加且很多无法进行gc释放。

§ jhat

全称: JVM Heap Analysis Tool

和jmap配合, 可以解析jmap生成的堆快照, 支持生成1个web进程供我们分析和查看。

命令用法:

jhat -J-Xmx515M dumpfile.dump

此时就会启动1个webServer,然后我们去访问就行了

§ jdb

全称:Java Debugger

作用:用来对core文件和正在运行的Java进程进行实时地调试,类似于c++里的gdb

常见用法:

启动进程并调试: jdb -classpath . Test

至二级调试某进程: jdb -attach 8000 -sourcepath /Users/wefit/Development/study/java/jtest/src/

§ jcmd

作用:多功能的工具,可以用它来导出堆、查看Java进程、导出线程信息、执行GC、还可以进行采样分析,可以理解为1个性能调优时用的工具。

常见命令:

查看 当前机器上所有的 jvm 进程信息: jcmd -l

查看指定进程的性能统计信息: jcmd pid PerfCounter.print

列出当前运行的 java 进程可以执行的操作: jcmd PID help

查看线程堆栈信息: jcmd PID Thread.print

查看堆内存信息: jcmd PID GC.heap_dump FILE_NAME

§ jps

简单记法: JVM process status

全名:Java Virtual Machine Process Status Tool

作用: 显示 当前系统用户 的 所有 Java进程情况及其进程号

常用命令:

查看进程jvm参数: jps -v

输出程序main class的完整package名或程序的jar文件完整路径名: jps -l

输出传递给main方法的参数: jps -m

§ jinfo

jvm infomation

作用:和jps功能类似, 但是支持根据指定pis查看指定进程

可以查看JVM参数、系统参数、调整jvm参数

但不支持查看java程序的内存使用情况

§ javap

把java字节码文件反汇编为Java源码文件。

§ javac

java编译工具

javac的执行过程:

§ JDK可视化工具

§ jconsole

可监控jvm,即可监控本地jvm也可监控远程jvm,管理应用程序,可以检查死锁等诸多问题。

§ jvisualvm

Q:

jvisualvm可以监控远程服务器的运行状态

可以在java程序运行起来后再运行, 通过某些协议连接到java进程中。

运行时, 可以不需要配置配置环境、虚拟机参数等。

c 抄了java 多少东西,几款Java开发者必备常用的工具,准点下班不在话下相关推荐

  1. 几款Java开发者必备常用的工具,准点下班不在话下

    摘要:一问一答的形式轻松学习掌握java工具. 以一问一答的形式学习java工具 Q:检查内存泄露的工具有? A: jmap生成dump转储文件,jhat可视化查看. Q:某进程CPU使用率一直占满, ...

  2. colorpix取色小工具_五款互联网人必备的免费工具,超级实用

    运营公举小磊磊(公众号ID:gongjulei)所有文章均为独家原创,未经许可,不得转载. 一名互联网人,从来都不会嫌工具多.小公举今天找到了5款互联网人必备的免费工具,都是我亲自试用过的.话不多说, ...

  3. 【推荐】一款适合开发者的桌面整理工具,让你的屏幕干净整洁!

    前言 程序员,一个面对大量工具与文档的特殊人群,你有桌面杂乱无章无法直接定位文件的时候吗? 话不多说,博主先试试效果. 你看,每个类别通通划分为一个盒子,工具中还附带很方便的 待办事项 功能,更多功能 ...

  4. java并发编程中常用的工具类 Executor

    /***************************************************  * TODO: description .  * @author: gao_chun  * ...

  5. 推荐一款Java开发的精美个人博客

    点击下方「关注」和「星标」公众号 嗨喽,大家好,我是圈子哥! 今天已经是五一的最后一天了,这个五一出去浪了两天,但是,发现这个五一旅游的人真的太多了,真的只能用人山人海来形容了,昨天在过马路的时候,也 ...

  6. java程序 开发工具_15款Java程序员必备的开发工具

    如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过.这是一款商业级的编程语言,我们没有办法不接触它. 对于Java,有两种截然不同的观点:一种认为Java是最简单功能 ...

  7. 分享五款java学习辅助工具,总有你用的上的~

    想要学好java技术,除了自身的努力,辅助工具也不缺少,辅助工具可以帮助大家在今后的工作中可以提高工作效率,下面小编就来分享五款java学习辅助工具,总有你用的上的~ 五款java学习辅助工具: 1. ...

  8. 推荐:一款Java开源的Springboot 即时通讯 IM 聊天系统

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 # 开篇 电商平台最不能缺的就是即时通讯,例如通知类下发,客服聊天 ...

  9. 常用的6款Java开源报表制作工具

    本文为大家推荐6款常用的Java开源报表制作工具,供开发者学习.参考. 1.Aspose.Cells for JasperReports 一个基于Java的开源报表工具,它可以在Java环境下像其他I ...

最新文章

  1. sql server ssl安全错误_Nginx的这些安全设置,你都知道吗?
  2. pyspider architecture--官方文档
  3. PlantUML权威教程-时序图
  4. python取前三位_Python 实现取多维数组第n维的前几位
  5. php删除双引号,PHP引号前添加反斜杠、去除反斜杠的方法
  6. python 列表切片学习
  7. Fiddler的使用介绍及抓包分析(详解)
  8. 怒了,以后有文件保存到网上
  9. 联通4g满格但是网速慢_联通4g网络慢是什么原因 联通4g满格但是网速慢
  10. 【Java分享客栈】SpringBoot线程池参数搜一堆资料还是不会配,我花一天测试换你此生明白。
  11. android vr游戏开发,安卓VR成人游戏合集
  12. IDEA终端光标太粗怎么设置?及操作技巧
  13. 微信ChatEmoji表情适配,对微信公众号开发有帮助
  14. Window纯净系统安装详细教程
  15. Oracle提取中文字符串拼音首字母函数
  16. C语言的从零开始和我自己的心路历程
  17. data单复数一样吗_data的复数形式是datas还是data?rt
  18. AJAX与cooikes
  19. 史密斯圆图串并联口诀_串联并联口诀
  20. 程序员-建立你的商业意识 闫辉 著

热门文章

  1. tp5分页不加载搜索参数
  2. linux拷贝带子文件夹命令,简单带子目录的makefile练习
  3. java 批量替换字符串_# Java 一步一步实现高逼格的字符串替换工具(二)
  4. linux mariadb 图形化,linux 初学者 - MariaDB 图形管理篇
  5. arm集群服务器_什么样的ARM处理器及内存配置适合用来开发ARM集群服务器?
  6. 向上累积频数怎么算_视频号怎么运营?小白也能迅速get的技巧
  7. 小学五年级计算机进度安排,苏教版小学五年级信息技术教学计划及进度安排.DOC...
  8. java8与hibernate_如何在JPA和Hibernate中使用Java 8 LocalDateTime
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的旅游景点酒店预订网站设计
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的实体店会员服务系统