c 抄了java 多少东西,几款Java开发者必备常用的工具,准点下班不在话下
摘要:一问一答的形式轻松学习掌握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开发者必备常用的工具,准点下班不在话下相关推荐
- 几款Java开发者必备常用的工具,准点下班不在话下
摘要:一问一答的形式轻松学习掌握java工具. 以一问一答的形式学习java工具 Q:检查内存泄露的工具有? A: jmap生成dump转储文件,jhat可视化查看. Q:某进程CPU使用率一直占满, ...
- colorpix取色小工具_五款互联网人必备的免费工具,超级实用
运营公举小磊磊(公众号ID:gongjulei)所有文章均为独家原创,未经许可,不得转载. 一名互联网人,从来都不会嫌工具多.小公举今天找到了5款互联网人必备的免费工具,都是我亲自试用过的.话不多说, ...
- 【推荐】一款适合开发者的桌面整理工具,让你的屏幕干净整洁!
前言 程序员,一个面对大量工具与文档的特殊人群,你有桌面杂乱无章无法直接定位文件的时候吗? 话不多说,博主先试试效果. 你看,每个类别通通划分为一个盒子,工具中还附带很方便的 待办事项 功能,更多功能 ...
- java并发编程中常用的工具类 Executor
/*************************************************** * TODO: description . * @author: gao_chun * ...
- 推荐一款Java开发的精美个人博客
点击下方「关注」和「星标」公众号 嗨喽,大家好,我是圈子哥! 今天已经是五一的最后一天了,这个五一出去浪了两天,但是,发现这个五一旅游的人真的太多了,真的只能用人山人海来形容了,昨天在过马路的时候,也 ...
- java程序 开发工具_15款Java程序员必备的开发工具
如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过.这是一款商业级的编程语言,我们没有办法不接触它. 对于Java,有两种截然不同的观点:一种认为Java是最简单功能 ...
- 分享五款java学习辅助工具,总有你用的上的~
想要学好java技术,除了自身的努力,辅助工具也不缺少,辅助工具可以帮助大家在今后的工作中可以提高工作效率,下面小编就来分享五款java学习辅助工具,总有你用的上的~ 五款java学习辅助工具: 1. ...
- 推荐:一款Java开源的Springboot 即时通讯 IM 聊天系统
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 # 开篇 电商平台最不能缺的就是即时通讯,例如通知类下发,客服聊天 ...
- 常用的6款Java开源报表制作工具
本文为大家推荐6款常用的Java开源报表制作工具,供开发者学习.参考. 1.Aspose.Cells for JasperReports 一个基于Java的开源报表工具,它可以在Java环境下像其他I ...
最新文章
- sql server ssl安全错误_Nginx的这些安全设置,你都知道吗?
- pyspider architecture--官方文档
- PlantUML权威教程-时序图
- python取前三位_Python 实现取多维数组第n维的前几位
- php删除双引号,PHP引号前添加反斜杠、去除反斜杠的方法
- python 列表切片学习
- Fiddler的使用介绍及抓包分析(详解)
- 怒了,以后有文件保存到网上
- 联通4g满格但是网速慢_联通4g网络慢是什么原因 联通4g满格但是网速慢
- 【Java分享客栈】SpringBoot线程池参数搜一堆资料还是不会配,我花一天测试换你此生明白。
- android vr游戏开发,安卓VR成人游戏合集
- IDEA终端光标太粗怎么设置?及操作技巧
- 微信ChatEmoji表情适配,对微信公众号开发有帮助
- Window纯净系统安装详细教程
- Oracle提取中文字符串拼音首字母函数
- C语言的从零开始和我自己的心路历程
- data单复数一样吗_data的复数形式是datas还是data?rt
- AJAX与cooikes
- 史密斯圆图串并联口诀_串联并联口诀
- 程序员-建立你的商业意识 闫辉 著
热门文章
- tp5分页不加载搜索参数
- linux拷贝带子文件夹命令,简单带子目录的makefile练习
- java 批量替换字符串_# Java 一步一步实现高逼格的字符串替换工具(二)
- linux mariadb 图形化,linux 初学者 - MariaDB 图形管理篇
- arm集群服务器_什么样的ARM处理器及内存配置适合用来开发ARM集群服务器?
- 向上累积频数怎么算_视频号怎么运营?小白也能迅速get的技巧
- 小学五年级计算机进度安排,苏教版小学五年级信息技术教学计划及进度安排.DOC...
- java8与hibernate_如何在JPA和Hibernate中使用Java 8 LocalDateTime
- 基于JAVA+SpringMVC+Mybatis+MYSQL的旅游景点酒店预订网站设计
- 基于JAVA+SpringMVC+Mybatis+MYSQL的实体店会员服务系统