学习使用Jprofiler(内存/遥感检测)

1. List item

  • profile a demo session or a saved session 选择一个保存的session
  • Attach to a running JVM 选择一个正在运行的JVM
  • Profile an application server,locally or remotely 连接本地或者远程的应用
  • Open a snapshot 打开一个快照

Jprofiler的两种采集方式

  1. Instrumentation(重构模式):在加载class之前,JProfier把相关代码写入到需要分析的class的bytecode中,对正在运行的jvm有一定影响
    - 优点:调用堆栈的信息是准确的
    - 去点:如果分析的class较多,则对应的性能影响较大,此模式最好需要跟Filter使用,只对特定的类或包进行分析

  2. Sampling:类似于样本统计,每隔一段时间(5ms)将每个线程中方法栈中的信息统计出来
    - 优点:对cpu开销非常小
    - 缺点:一些数据/特性不能提供(方法的调用次数/执行时间)

如果是对正在运行的java程序进行采集,最好使用Sampling进行分析

使用方式

1.遥感监测

在这里插入图片描述

2. 内存视图

在这里插入图片描述

选择是对类的分析还是对包的总体分析==(如果class很多,建议使用package进行分析)==
在这里插入图片描述

选择中文描述详细信息
Recorded Objects记录对象查看特定时间段对象的分配,并记录分配的调用堆栈
Allocation Call Tree分配树访问显示一棵树请求或者方法,类,包或对已选择类有带注释的分配信息的J2EE组件
Allocation Hot Spot分配热点显示一个列表,包括方法,类,包或分配已选择类的J2EE组件。你可以标注当前值并且显示于每个热点都可以显示他的跟踪记录数
Class Tracker类追踪器类跟踪视图可以包含任意数量的图表,显示选定的类和包的实例与时间
  1. 对象分析:
  • 频繁创建java对象:死循环,循环次数过多
  • 存在大的对象:读取文件时,byte[]应该边写边读。—>如果长时间不写出,会导致byte[]过大
  • 内存泄漏

如果内存出现一下的情况,也就是在GC的时候,内存还是处于上升的状态的时候就需要去查看内存泄漏
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值