【Java】java 性能监控及工具
2023-09-27 14:25:05 时间
java程序内存泄漏排查
一个java应用越跑越慢,如何排查?
首先通过jps找到java进程ID。然后top -p [pid]发现内存占用是否达到了最大值(-Xmx)。开始怀疑是由于频繁Full GC导致的,于是通过:
jstat -gcutil [pid] 60000
查看GC的情况,其中60000表示每隔60秒钟输出一次。果然是Full GC次数太多,JVM大部分时间都进行Full GC,而此时JVM会暂停其他一切工作,所以程序会运行得非常慢。
那到底的程序的哪一部分导致消耗了这么多的内存呢?
jmap -histo:live [pid]
查看进程中各种类型的对象创建了多少个,以及每种类型的对象占多少内存。当看到有个对象被创建了1千多万个实例时就能定位到是哪里的问题了。
另外说一下,通过jmap还可以生成JVM的内存dump文件,命令为:
jmap -dump:format=b,file=文件名 [pid],
然后通过jhat命令在浏览器中查看,或者通过jvisualvm、eclipse memory analyzer等工具进行查看。使用jhat命令查看的方式为:
jhat -J-Xmx4096M [file]
这个内存用量可以跟据实际情况调整,等控制台输出:Started HTTP server on port 7000. Server is ready,后在浏览器中输入ip:7000就可以查看各上类中各种实例被创建了多少个。
jinfo:可以输出并修改运行时的java 进程的opts。
jps:与unix上的ps类似,用来显示
相关文章
- Java 使用正则表达式取出图片地址以及跳转的链接地址,来判断死链(一)
- Java描述设计模式(17):调停者模式
- Java之JMX获取应用进程CPU/内存使用率,监控GC回收
- FastDFS图片服务器java后台的简单调用
- Use Memcached for Java enterprise performance, Part 1: Architecture and setup
- 什么是Java Marker Interface(标记接口)
- Java的Json解析包FastJson使用
- java 7中新增的CPU和负载的监控
- MongoDB Java
- java安全编码指南之:文件IO操作
- 使用java自带工具监控jvm运行状态
- 『Java练习生的自我修养』java-se进阶⁵ • 常用IO流
- Fundebug后端Java异常监控插件更新至0.2.0,支持Spring及Maven
- java虚拟机性能监控工具介绍
- java项目异常监控_JAVA项目中的常用的异常处理情况总结
- Java的集合排序:Collections.sort、list.sort和list.stream().sorted方法详解