【JVM|11、摸清JVM对象分布】Jstat可以了解到JVM的运行状况,而jstat –gc更是可以摸清JVM GC相关状况。而jmap、jhat搭配使用,可以帮助我们观察JVM中的对象分布。
Jmap –heap PID:
这个命令可以打印一个堆的摘要信息,包括使用的GC算法、堆配置信息、各个内存区域的使用信息等:
文章图片
Jmap –histo PID:
会按照各种对象占用内存空间的大小进行降序排列,把占用内存最多的对象放在最上面。所以如果只是想简单了解一下当前jvm中的对象对内存占用的情况,只要直接使用jmap –histo命令即可,可以快速了解到当前内存里到底哪个对象占用了大量的内存空间。
文章图片
Jmap –dump:live,format=b,file=dump.hprof PID:
这个命令会在当前目录下生成一个dump.hprof文件,这是一个二进制的格式,不能直接打开看,他把这一时刻JVM堆内存里所有对象的快照放到文件里去了,以供后续分析。
Jhat –port 7000 dump.hprof:
Dump.hprof即是上面hmap导出的文件,使用jhat可以对这一文件进行分析。Jhat内置了web服务器,支持通过浏览器以图形化的方式分析堆转储快照,这里指定的http端口号是7000端口,只要用浏览器访问这台机器所在的7000端口,便可以图形化地来分析堆内存的对象分布情况。
推荐阅读
- JVM|OOM简介
- RabbitMQ|RabbitMQ如何保证消息消费的顺序性()
- 工具|Maven详解合集
- JVM|6、JVM分代模型--老年代 的垃圾回收
- java|Java中的集合体系之Collection【List、Set】和Map集合体系? (十一)
- Spring相关|Spring Boot 面试题 汇总 --- 《绝绝子》
- java|Java集合【List、Set、Map】案例整合以及集合实现类的区别()
- 牛客网后端项目实战|牛客网后端项目实战(二十五)(Redis入门)
- 程序员|Java详解(如何实现一个-redis-缓存服务,牛客视频面试)