如何利用监控工具调优?

1、堆信息查看

  1. 可查看堆空间大小分配(年轻代、年老代、持久代分配)

  2. 提供即时的垃圾回收功能

  3. 垃圾监控(长时间监控回收情况)

  4. 查看堆内类、对象信息查看:数量、类型等

  5. 对象引用情况查看

有了堆信息查看方面的功能,我们一般可以顺利解决以下问题:

  1. 年老代年轻代大小划分是否合理

  2. 内存泄漏

  3. 垃圾回收算法设置是否合理

2、线程监控

线程信息监控:系统线程数量

线程状态监控:各个线程都处在什么样的状态下

Dump 线程详细信息:查看线程内部运行情况

死锁检查

3、 热点分析

  1. CPU 热点:检查系统哪些方法占用的大量 CPU 时间;

  2. 内存热点:检查哪些对象在系统中数量最大(一定时间内存活对象和销毁对象一起统计)这两个东西对于系统优化很有帮助。我们可以根据找到的热点,有针对性的进行系统的瓶颈查找和进行系统优化,而不是漫无目的的进行所有代码的优化。

4、快照

快照是系统运行到某一时刻的一个定格。在我们进行调优的时候,不可能用眼睛去跟踪所有系统变化,依赖快照功能,我们就可以进行系统两个不同运行时刻,对象(或类、线程等)的不同,以便快速找到问题。

举例说,我要检查系统进行垃圾回收以后,是否还有该收回的对象被遗漏下来的了。那么,我可以在进行垃圾回收前后,分别进行一次堆情况的快照,然后对比两次快照的对象情况。

5、内存泄露检查

内存泄漏是比较常见的问题,而且解决方法也比较通用,这里可以重点说一下,而线程、热点方面的问题则是具体问题具体分析了。

内存泄漏一般可以理解为系统资源(各方面的资源,堆、栈、线程等)在错误使用的情况下,导致使用完毕的资源无法回收(或没有回收),从而导致新的资源分配请求无法完成,引起系统错误。内存泄漏对系统危害比较大,因为它可以直接导致系统的崩溃。

发表评论

后才能评论

评论(2)