IBM jca 工具的学习与整理
IBM jca 工具的学习与整理
背景
发现自己最早看到IBM这个工具的时间是 2022年9月份.
但是一直没有进行过仔细的学习与论证.
本周出现了一个问题. 虽然通过gclog明显看出来是一个oom
然后内存对象里面排第一的是 hashnode 相关内容
猜测出可能是excel导入/导出相关的内容
但是自己并没有快速的从jstack 里面找出来具体的线程
还是通过 mat 分析dump文件才找到的具体功能的操作.
感觉自己对jstack的分析一直比较怵头
感觉他的文档结果不好看, 自己的确也有点密集恐惧症,
对这种文档的分析总是不得要领.
所以想经过这次事件,还是多学习一下jstack的分析
寄希望于dump 文件太大了. 速度太慢.
有时候黄花菜都凉了.
工具下载
https://www.ibm.com/support/pages/ibm-thread-and-monitor-dump-analyzer-java-tmda
文件其实比较小.
最新版本是 4.6.16.
文件名是:
jca4616.jar
快捷方式
可以将文件放到一个目录下面, 然后修改文件名
jca.jar
添加一个 bat 脚本
@echo off
java -jar jca.jar
双击就可以使用这个工具了.
抓取信息
pid=`ps -ef |grep java |grep $mainclassname|grep -v grep |awk '{print $2}'`
now=`date +%Y%m%d%H%M`
jcmd $pid VM.uptime >>trace_$now.log \;
jcmd $pid VM.flags >>trace_$now.log \;
jcmd $pid Thread.print >>trace_$now.log \;
jcmd $pid GC.class_histogram -all >>trace_$now.log \;
jcmd $pid GC.heap_info >>trace_$now.log \;
分析与查看
IBM其实是J9 jvm的开发商
他的mat和jca工具都非常不错.
mat可以分析dump文件
jca可以快速的分析 jstack等信息. 也可以分析 dump 文件.
jca最重要的几项工作主要如下
总要功能界面

thread status analysis
- 能够对 thread的状态进行分组. 界面化比较好看.

Methad analysis
- 可以对主要的方法进行pie图的区分

Thread Detail
- 查看线程的具体信息, 可以排序. 比看txt优雅很多
- 注意线程名前面有一个console标签的说明有等待

Monitor Detail
- 可以查看拥有锁以及被锁的线程明细信息
异常日志分析
其实 内存的histogram 信息能够看到一个很明显的增多的情况:
num #instances #bytes class name
----------------------------------------------
1: 277303736 8873719552 java.util.HashMap$Node
2: 2752253 1928937296 [Ljava.util.HashMap$Node;
发现极度怀疑是 hashmap 的一些处理导致问题.
然后分析jstack的堆栈, 可以看到一个明显的进程信息:
"http-nio-5200-exec-134" #131057 daemon prio=5 os_prio=0 tid=0x00007f5a343e0000 nid=0x12fac7 runnable [0x00007f58257d2000]
java.lang.Thread.State: RUNNABLE
at java.util.HashMap.newNode(HashMap.java:1750)
at java.util.HashMap.putVal(HashMap.java:631)
at java.util.HashMap.put(HashMap.java:612)
所以极度怀疑是这个线程出现的问题
然后可以通过堆栈的进一步分析, 去查看自己产品的堆栈信息来判断是哪个功能有问题.
然后有条件的分析一下dump文件, 说补丁能够看到具体的功能. 有概率看到具体的文件.
excel的处理
其实处理excel 跟处理证券类似, 都有"胖手指" 的现象.
本次事故的核心原因就是 excel 有一个快速的复制功能.
在复制某一个单元格之后, 单机任意一栏的标题栏. ctrl + v 就可以将整个excel的当前栏替换掉
因为 2007版本的excel 已经完善了 excel的最大列数和行数
2003版最大行数是65536行,最大列数是256列。
Excel2007及以后的版本最大行数是1048576行,最大列数是16384列
如果1M行数全部有数据进入 内存里面就会消耗非常多的内存信息.
所以还是应该提前使用poi的方式来检查行数和列数. 避免出现此类问题.
使用的内存量计算
通过mat 分析dump文件可以看到
空行excel 大概占用 13KB的内存.
如果1M的excel 文件大概需要 13G的内存.
如果老年代大于20GB. 留下 7G左右给常规使用的环境
理论上可以支撑住这样的有异常的文件 只是大家都可能会卡一些.
所以有时候 可以通过技术手段解决问题, 有时候也可以通过钱来解决问题.

IBM jca 工具的学习与整理的更多相关文章
- Git学习资料整理
Git作为一个优秀的版本控制系统,是我们开发人员必须要学会使用的一个工具,接触git一年多以来,也看了不少相关资料,今天把我所看过的一些学习资源整理一下. Git入门当然首推廖雪峰廖老师的教程:Git ...
- 超全PHP学习资源整理:入门到进阶系列
PHP是少数几门在语言层面饱受诟病,但在实际开发和应用上却又让人无法撒手的语言之一.就好比路边摊小吃,一遍骂人家不卫生,一遍却又说:真香.所谓接地气,不外如此,大道理不说,PHP光是轮子多.市场占有率 ...
- 第二弹:超全Python学习资源整理(进阶系列)
造一个草原要一株三叶草加一只蜜蜂.一株三叶草,一只蜂,再加一个梦.要是蜜蜂少,光靠梦也行. - 狄金森 "成为编程大牛要一门好语言加一点点天分.一门好语言,一点点天分,再加一份坚持.要是天分 ...
- NPM 学习笔记整理
NPM 学习笔记整理 阅读 550,2017年06月04日 发布,来源:blog.ihoey.com 什么是 NPM npm 之于 Node ,就像 pip 之于 Python , gem 之于 Ru ...
- Three入门学习笔记整理
一.官方网站:https://threejs.org 二.关于Three.js 三.开始 四.实例 基本结构 结果 五.概念 坐标系 场景 相机 灯光 3D模型 六.简单动画 七.交互控制 结束 # ...
- UWP学习目录整理
UWP学习目录整理 0x00 可以忽略的废话 10月6号靠着半听半猜和文字直播的补充看完了微软的秋季新品发布会,信仰充值成功,对UWP的开发十分感兴趣,打算后面找时间学习一下.谁想到学习的欲望越来越强 ...
- iOS 开发学习资料整理(持续更新)
“如果说我看得比别人远些,那是因为我站在巨人们的肩膀上.” ---牛顿 iOS及Mac开源项目和学习资料[超级全面] http://www.kancloud.cn/digest/ios-mac ...
- DBN 入门学习资料整理
建议按序阅读 1.Deep Learning 概述 Deep Learning(深度学习)学习笔记整理系列 : http://blog.csdn.net/zouxy09/article/details ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- SVN版本控制工具使用学习
SVN版本控制工具使用学习 Subversion是优秀的版本控制工具. 1.下载和搭建SVN服务器 http://subversion.apache.org/packages.html 类型有5种,推 ...
随机推荐
- 解压.tar.gz文件的命令
要解压以 .tar.gz 或 .tgz 扩展名结尾的文件,可以使用 tar 命令.通常,这些文件是使用 tar 和 gzip 压缩的.以下是解压 .tar.gz 文件的命令: tar -xzvf 文件 ...
- libGDX游戏开发之Box2D(十四)
libGDX游戏开发之Box2D(十四) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网和goo ...
- 浅谈树形DP
树形DP是动态规划中最难也最常考的内容.具有DP和图论相结合的特点. 但从本质上来说,树形DP只不过是一种线性DP,只是将它与搜索结合起来了而已. 树形DP的基本步骤 读图 树形DP的题目中,通常会给 ...
- const 方法可以改变(智能)指针成员指向的对象
<C++ Primer 5th> P406 const 方法,不能修改指针本身,但是可以修改指针指向的对象! class Foo { public: Foo() : c(new int() ...
- 规模化敏捷框架何从入手?这篇文章把SAFe讲透了!
摘要:敏捷软件开发理念已渐渐被业界普遍接受,越来越多的公司和团队不得不面对一个新的问题,就是规模化敏捷的引入和实现.目前市场上规模化框架主要有SAFe,Less,Scrum of Scrums, Sp ...
- 云小课|MRS基础原理之Hue组件介绍
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:Hue是一组WEB ...
- 云小课|GaussDB(DWS)数据存储尽在掌控,冷热数据切换自如
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: GaussDB( ...
- 一文详解什么是可解释AI
摘要:本文带来什么是可解释AI,如何使用可解释AI能力来更好理解图片分类模型的预测结果,获取作为分类预测依据的关键特征区域,从而判断得到分类结果的合理性和正确性,加速模型调优. 1. 为什么需要可解释 ...
- A/B测试助力游戏业务增长
更多技术交流.求职机会.试用福利,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 中国游戏行业发展现状及挑战 国内市场增长乏力 2021年游戏销售收入2965.13亿元,同比增长6.4% ...
- Windows线程开发
Windows线程开发 1.线程基础 Windows线程是可以执行的代码实例.系统十一线程为单位调度程序.一个程序当中可以有多个线程,实现多个任务的处理. Windows线程的特点: 线程都具有1个I ...