李锋镝的博客

  • 首页
  • 时间轴
  • 插件
  • 评论区显眼包🔥
  • 左邻右舍
  • 博友圈
  • 关于我
    • 关于我
    • 另一个网站
    • 我的导航站
    • 网站地图
  • 留言
  • 赞助
Destiny
自是人生长恨水长东
  1. 首页
  2. 转载
  3. 技术
  4. 正文

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

2021年2月19日 52点热度 0人点赞 0条评论

摘要:一问一答的形式轻松学习掌握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进程中。
  • 运行时, 可以不需要配置配置环境、虚拟机参数等。

原文链接:https://huaweicloud.blog.csdn.net/article/details/111355665

除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/transport/2496

相关文章

  • ThreadLocal如何解决内存泄漏问题
  • SpringBoot定时任务 - 经典定时任务设计:时间轮(Timing Wheel)案例和原理
  • @Resource 和 @Autowired 的区别
  • 一线技术人的成长思考总结
  • Spring Boot 2.x使用PostgreSQL数据库
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: JAVA 常用工具 程序员
最后更新:2021年2月19日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇
下一篇 >

文章评论

1 2 3 4 5 6 7 8 9 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 52 53 54 55 57 58 60 61 62 63 64 65 66 67 69 72 74 76 77 78 79 80 81 82 85 86 87 90 92 93 94 95 96 97 98 99
取消回复

位卑未敢忘忧国,事定犹须待阖棺。

那年今日(12月17日)

  • 1981年:德国足球运动员蒂姆·维泽出生
  • 1971年:印度和东巴基斯坦达成停火协议
  • 1909年:比利时国王利奥波德二世逝世
  • 1905年:狙击之王西蒙·海耶出生
  • 1902年:京师大学堂正式开学
  • 更多历史事件
最新 热点 随机
最新 热点 随机
AI原生数据库新标杆:seekdb深度解析,轻量架构与混合搜索的双重革命 做了一个WordPress文章热力图插件 Spring WebFlux底层原理深度剖析-从响应式流到事件循环的全链路拆解 Spring WebFlux深度解析:异步非阻塞架构与实战落地指南 规范驱动AI编程:用OpenSpec实现100%可控开发,从需求到代码的全流程闭环 WordPress网站换了个字体,差点儿把样式换崩了
玩博客的人是不是越来越少了?准备入手个亚太的ECS,友友们有什么建议吗?使用WireGuard在Ubuntu 24.04系统搭建VPNWordPress实现用户评论等级排行榜插件Gemini 3 Pro 深度测评:多模态AI编程的跨代际突破,从一句话到完整应用的全链路革命WordPress网站换了个字体,差点儿把样式换崩了
使用itext和freemarker来根据Html模板生成PDF文件,加水印、印章 项目中不用 redis 分布式锁,怎么防止用户重复提交? SpringBoot框架自动配置之spring.factories和AutoConfiguration.imports JAVA线程池简析(JDK1.6) IDEA版本2020.*全局MAVEN配置 Gemini 3 深度解析:从像素级复刻到 AGI 雏形,多模态 AI 如何重构开发与创作?
标签聚合
JVM WordPress SQL 日常 K8s 架构 SpringBoot AI编程 MySQL ElasticSearch 多线程 分布式 数据库 AI JAVA docker 设计模式 Spring IDEA Redis
友情链接
  • Blogs·CN
  • Honesty
  • 临窗旋墨
  • 哥斯拉
  • 彬红茶日记
  • 志文工作室
  • 搬砖日记
  • 旧时繁华
  • 林羽凡
  • 瓦匠个人小站
  • 皮皮社
  • 知向前端
  • 蜗牛工作室
  • 韩小韩博客
  • 风渡言

COPYRIGHT © 2025 lifengdi.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Dylan

津ICP备2024022503号-3