[转帖]一个用于辅助分析‘Java内存泄露’的小工具

一个,用于,辅助,分析,java,内存,泄露,工具 · 浏览次数 : 0

小编点评

**Histo Analysis Tool Configuration** * **fgc_pre_histo_log.properties**: Specifies the path to the Histo analysis tool configuration file for the pre-gc run. * **fgc_post_histo_log.properties**: Specifies the path to the Histo analysis tool configuration file for the post-gc run. * **diff_biz_class_name.properties**: Specifies the class name to compare for business class objects. * **diff_third_class_name.properties**: Specifies the class name to compare for third-party class objects. * **diff_all_class_names.properties**: Specifies the class names to compare for all object types. * **diff_interval**: Specifies the number of days to compare for. * **diff_ratio_threshold**: Specifies the percentage difference in object count between pre- and post-gc snapshots to consider a significant change. **Usage** 1. Set up the configuration files and ensure they are located in the project's `src/main/resources` directory. 2. Run the application with the `-D` flag to specify the path to the configuration files. 3. The tool will generate three files: * `diff_biz_objects.log` for business class objects. * `diff_third_objects.log` for third-party class objects. * `diff_all_objects.log` for all object types. **Note** * The default read path for the Histo analysis files is `src/main/resources/config.properties`. * The `diff_ratio_threshold` value is set to 10%. This means that only objects that have changed by more than 10% will be considered significant. * The tool uses the `jmap` tool to generate the object instance distribution graphs. * The tool generates the files in the `gen` directory.

正文

https://www.jianshu.com/p/658cb6cbfe61

 

histo对比工具

  1. 这是一个用于辅助分析‘Java内存泄露’的小工具
  2. 源码地址

实现原理

  1. 分析fgc前后的类实例对象分布变化来辅助判断
  2. 如果多次fgc后,一个类的对象实例没有发生变化或者越来越多,则需要重点排查

操作步骤

  1. jmap -histo pid >> preGCHisto.log
    • 打印gc之前的内存对象实例分布
  2. jmap -histo:live pid >> postGCHisto.log
    • 打印gc之后的内存对象实例分布
  3. 使用HistoAnalysisTool
    • config.properties分别指定fgc前后的histo日志,关注的业务类包名等
  4. 工具生成三个文件,按照gc回收的百分比排序,越靠前越需要注意
    • diff_all,所有的类对象对比
    • diff_biz,主要是业务的类对象对比(传入过滤的类名即可)
    • diff_third,主要是三方的类对象对比
  5. 可打印多天的histo,用来做对比分析
    • 如果每天某个对象的实例数目都一直在增加,则内存泄露几率较高

其他注意事项

  1. 目前histo的默认读取路径是src/main/resources
  2. 默认的config.properties的读取路径也是在src/main/resources
  3. 生成的diff文件是在gen目录
  4. 目前工具是需要将源代码导入IDE执行
  5. 目前工程中的histo可直接使用测试,是线上achilles项目backend的histo

更新

  • 2018.1.16 增加阈值过滤,重点关注如对象实例比较大的,如超过10k的对象实例

与[转帖]一个用于辅助分析‘Java内存泄露’的小工具相似的内容:

[转帖]一个用于辅助分析‘Java内存泄露’的小工具

https://www.jianshu.com/p/658cb6cbfe61 histo对比工具 这是一个用于辅助分析‘Java内存泄露’的小工具 源码地址 实现原理 分析fgc前后的类实例对象分布变化来辅助判断 如果多次fgc后,一个类的对象实例没有发生变化或者越来越多,则需要重点排查 操作步骤

[转帖]IPMItool 简单介绍

IPMItool是一个用于管理和配置,支持智能平台管理接口(IPMI)1.5版和2.0版规范的设备的实用程序。 IPMI是一个开放的标准,监控,记录,回收,库存和硬件实现独立于主CPU,BIOS,以及操作系统的控制权。 服务处理器(或底板管理控制器,BMC)的背后是平台管理的大脑,其主要目的是处理自

[转帖]REDIS SLOWLOG(慢日志)

slowlog 此命令用于读取和重置Redis慢查询日志。 一、Redis slowlog 官方概述: Redis Slow Log是一个用于记录超过指定执行时间的查询的系统。执行时间不包括与客户端交谈,发送答复等I / O操作,而仅包括实际执行命令所需的时间(这是命令执行的唯一阶段,在该阶段线程被

[转帖]Netplan——新一代网络配置工具

https://www.jianshu.com/p/174656635e74 Netplan —— 抽象网络配置生成器 ,是一个用于配置 Linux 网络的简单工具。 通过 Netplan ,你只需用一个 YAML 文件描述每个网络接口需要配置成啥样即可。 根据这个配置描述, Netplan 便可帮

[转帖]Netplan——新一代网络配置工具

https://www.modb.pro/db/156642 Netplan —— 抽象网络配置生成器 ,是一个用于配置 Linux 网络的简单工具。 通过 Netplan ,你只需用一个 YAML 文件描述每个网络接口需要配置成啥样即可。 根据这个配置描述, Netplan 便可帮你生成所有需要的

[转帖]BCC-Tool 工具使用

1. 概述 BCC是一个用于跟踪内核和操作程序的工具集,其软件包中包含了一些有用的工具和例子,它扩展了BPF(Berkeley Packet Filters),通常被称为eBPF , 在Linux3.15中首次引入,但大多数BCC的功能需要Libux4.1及以上版本。 BCC使用C语言进行内核检测,

[转帖]什么是ClickHouse?

什么是ClickHouse? ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 在传统的行式数据库系统中,数据按如下顺序存储: RowWatchIDJavaEnableTitleGoodEventEventTime #0 89354350662 1 Investo

[转帖]pgbench(postgresql压力测试工具)

pgbench 名称 pgbench -- 在PostgreSQL中执行基准线测试 大纲 pgbench -i [option...] [dbname] pgbench [option...] [dbname] 描述 pgbench是一个用于在PostgreSQL数据库中运行基准测试的简单程序。pg

[转帖]LVS负载均衡的三种方式

1.VS-NAT(基于网络地址转换,network address translation ,NAT) VS-NAT是LVS最基本的方法,如果想要设置一个用于测试的LVS,这是一个最简单的方法。 当客户发出请求,lvs负载均衡中的director会将接受到的包的目标地址重写为某个real-serve

[转帖]strace 命令详解

目录 1、strace是什么? 2、strace能做什么? 3、strace怎么用? 4、strace问题定位案例 4.1、定位进程异常退出 4.2、定位共享内存异常 4.3、 性能分析 5、总结 1、strace是什么? 按照strace官网的描述, strace是一个可用于诊断、调试和教学的Li