JVM内存分析工具及注意事项

5 篇文章 0 订阅

分析工具

jprofiler

官网  收费

Java Profiler - JProfiler

JProfiler's intuitive UI helps you resolve performance bottlenecks,
pin down memory leaks and understand threading issues.

jprofiler 提供了简单易用的UI界面,帮助解决性能问题,确定内存泄漏,解决线程问题。

When it comes to profiling, only the best tool is good enough.

只有准备好了 优秀的工具,才是足够好。

可以看出,jprofiler 的定位:是一款 简单好用的 内存分析工具。

jprofiler 可以看到实施的内存、GC、CPU、线程的活动状态,UI界面也比较友好。就是 收费

jvisualvm.exe、jconsole.exe

这两是 JDK自带的 内存检测工具。只是 UI界面 不太友好。

jprofiler 可以算是 这两的 升级版本。

MAT Memory Analyzer Tool

下载地址:

Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation

分析 JVM dump 文件 最好的工具。他可以 根据 dump文件 ,提示出 可能存在的问题,比如 哪些对象占用过多,并且可以分析出这些过多内存的 引用路径,对于分析问题 非常有帮助

注意事项:

1. jprofiler 实时内存 显示的对象 个数,是包含 存活对象和非存活对象的。 如果对象引用不可达,但是此时 没有发生GC时,也会被统计到对象个数中。

跟 jmap -histo pid 统计的数据一致。

2. jvisualvm.exe 工具自带了一个 dump按钮,如果点击了 Dump按钮,会触发一次GC活动

3. MAT Memory Analyzer Tool 分析工具,分析的dump文件,可能是只包含存活对象

就目前知道的 jmap -dump 命令 生成的 dump 文件,是只包含存活对象,即使 不存活的对象没有被GC回收,也不会输出到dump文件

4. 分析内存占用过的

内存占用过的,是一种结果。导致这个结果的原因:

1.  仍然存活的 对象 占据的内存

2. 已经die的对象 占据的内存

die的对象 占据的内存 会在未来某个时间 被GC 回收。

如果确定存活的对象 占据内存 依然居高不下,就要考虑:

1. 确实 需要 创建这些大量的对象,这种原因的话,就需要 避免 需要创建大量对象的 情况发生

2. 发生了 内存泄漏

所以,如果JVN内存占用过多,可能是 GC 没有触发,导致 引用不可达的对象 没有及时被回收。如果 用 jprofiler 分析问题的话,需要关注 GC 活动情况。如果GC后,内存仍然占用过的,就需要具体分析是否内存泄漏还是其他问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JVM 调优是保证 Java 应用程序高性能运行的关键之一。以下是一些 JVM 调优的注意事项: 1. 观察 JVM 运行状态:使用 JVM 监控工具,例如 jstat、jconsole、jvisualvm 等,观察 JVM 的运行状态,包括内存使用情况、CPU 占用率、线程数等指标,以便及时发现问题并进行调整。 2. 调整堆内存大小:堆内存Java 程序最重要的内存区域,需要根据实际情况进行调整。一般情况下,可以通过设置 JVM 参数 -Xms 和 -Xmx 来调整初始堆大小和最大堆大小。 3. 选择合适的垃圾回收器:JVM 支持多种垃圾回收器,例如 Serial、Parallel、CMS、G1 等。不同的垃圾回收器具有不同的优缺点,需要根据实际情况进行选择。 4. 避免频繁 Full GC:Full GC 是一种比较耗时的垃圾回收操作,一般情况下应该尽量避免频繁触发。可以通过调整垃圾回收器的参数、优化代码实现等方式来避免频繁 Full GC。 5. 合理使用线程:线程是 Java 程序中的重要资源,需要根据实际情况进行合理的使用。过多的线程会占用过多的内存和 CPU 资源,导致程序性能下降,甚至引起死锁等问题。 6. 避免内存泄漏:内存泄漏是 Java 程序中常见的问题,会占用大量内存空间导致程序性能下降。需要及时发现并修复内存泄漏问题,例如使用工具进行内存泄漏检测、优化代码实现等方式。 7. 充分利用硬件资源:JVM 调优不仅仅是针对软件层面的优化,还需要充分利用硬件资源,例如使用 SSD 硬盘、增加 CPU 核数等方式来提高程序性能。 需要注意的是,JVM 调优是一个复杂的过程,需要根据具体的应用场景进行调整。同时,JVM 调优也需要进行充分测试和评估,以确保调整后的 JVM 能够稳定运行并提高程序性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值