性能监控(二)-Jprofiler内存分析

本文详细介绍了使用JProfiler进行Java应用程序内存分析的方法。包括总体界面介绍、活动内存分析、堆内存轨迹分析等内容,帮助读者理解如何监控和优化Java应用的内存使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.测试代码


public class Person {

    private Integer pId;
    private String pName;
    ...
}

    public static void main(String[] args) throws InterruptedException {

        int pid = 0;
        while(pid < 1000000){
            Person person = new Person(pid,"person_" + pid );
            pid++;
            Thread.sleep(100);
            System.out.println("person = " + person);
        }

    }


2.总体界面介绍

2.1 Overview总览

主要显示内存、垃圾回收激活统计、类加载、线程、CPU负载等信息
在这里插入图片描述

2.2 内存Memory

  • Heap 堆(新生代+老年代):
    Java堆内存=新生代(Eden伊甸园_80%&Servivor_20%)33%+老年代(old)66%,Survivor会分为from(10%)和to(10%)两部分,但是JProfiler只显示一个Survivor,应该是总和。
    可以设置年轻代和老年代的分配比值 -XX:NewRatio=2,表示年轻代占1份,老年代占2份,总共3份。
  • Non-Heap 方法区(持久带):
    不深入了
    在这里插入图片描述

2.3 Recorded Objects记录活动对象

在这里插入图片描述

2.4 Recorded Throughput吞吐量

在这里插入图片描述
freed/second:表示每秒回收了多少对象

2.5 Classes类

在这里插入图片描述

2.6 Threads线程

在这里插入图片描述

2.7 CPU LoadCPU负载

在这里插入图片描述

2.8 GC

在这里插入图片描述

2.9 Custom Telemetries自定义遥测数据面板(略)

3 Live memory 活动内存

3.1 All objects

所有对象,可以查看依据分类classes/package;
在这里插入图片描述
在这里插入图片描述
若添加如下代码
在这里插入图片描述
则就会造成内存泄漏,垃圾回收不了

3.2 Recorded Objects

记录的活动对象
在这里插入图片描述

3.3 Allocation Call Tree

分配调用树:可以查看方法内存消耗(占用百分比),可按Methods/Classes/Packages进行查看,View Mode可以选择树或图的表现方式
在这里插入图片描述

3.4 Allocation Hot Spots

分配热点:可查看分配触发在什么方法上,主要消耗
在这里插入图片描述

3.5 Class Tracker

类追踪
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 Heap Walker 堆内存轨迹分析

对一定时间内收集的内存对像信息进行静态分析(可进行复杂的运算),所以功能很强大。包含对象的outgoing reference(外部引用), incoming reference(内部引用), biggest object(大对象)等。

在这里插入图片描述
在这里插入图片描述
隔10秒钟,再抓拍一次,进行对比
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值