- 博客(86)
- 收藏
- 关注
原创 Arthas CPU 火焰图技术 简谈
3.鼠标可以点击的选中的每个框就代表了一个栈里的函数,其宽度可以直接理解为CPU时间占比(其实是采样的数量以及与采样总量的占比)。2.Y轴代表方法的调用栈深度,每一层都是一个方法。顶部是正在执行的方法。这是注意的是x 轴并不代表时间,而是所有的调用方法合并后,按字母顺序排列。1.这里的x轴代表采样总量(也就是此刻所有执行的耗时cpu的方法)。由此可知,火焰图可以直观的帮我们分析CPU占用情况。进而被采样的次数比较多,占用的CPU时间多。b.被调用次数较多.(调用频率高)橙色部分代表内核态C语言代码。
2024-01-10 21:42:44
1512
原创 一次堆内存溢出查找分析笔记
代码如下:设置堆大小及堆内存快照:运行如下,出现了堆溢出:打开MemoryAnalyzer Tool,导入hprof文件,结果如下:上图点击Leak Suspects,如下图:再点击Details,显示如下:鼠标右键选 ==>with incoming references(查看被引用的来源) ,显示如下:再回到代码,查看oomList对象,结果在16行,找到了问题所在。当然也可以点击 See stacktrace:结果如下:...
2021-07-07 19:00:51
152
原创 CPU过高问题定位笔记
CPU过高定位一般有以上两种方案查询定位:第一种:top+jstack结果如下:由上图可知,进程36032的CPU占用过高接着用如下指令查看进程36032下的各线程信息结果如下:由上图可知,线程36044占用CPU过高首先,我们将线程PID36044转换为16进制 :8ccc然后用: jstack 进程PID > 路径 命令将进程36032信息输出到1.txt文件中然后用cat 读出信息,再加grep过滤输出与线程 8ccc相关的信息,如下图:结果定位为在 函.
2021-07-07 16:13:18
496
原创 通过线程堆栈日志定位并解决死锁问题笔记
一个死锁例子:package com.duoxiancheng;public class DeadLock { private static void deadLockExample(){ final Object o1=new Object(); final Object o2=new Object(); Runnable r1=()->{ synchronized(o1){ ...
2021-07-05 13:59:27
549
原创 学会使用 JDK 工具(3):用于查看 JVM 统计信息的 jstat笔记
jstat基本用法:jstat可以检查 JVM 整体的运行情况,可以看到 新生代,老年代等的内存使用情况,以及GC 次数和耗时.其中 -option 必选参数表示命令参数 如 gc 等, -t 为可选参数表示是否打印时间(秒),-h 可选参数,表示每隔多少行打印头部列表,如设置 -h 5 , 那么每五条记录就会重新打印表头,vmid 必选参数,Java 进程id,interval 可选参数表示采样的时间间隔,count 可选参数表示需要采样多少条.-option 可选如下:jstat -.
2021-07-04 15:40:21
177
原创 学会使用 JDK 工具(2):用于查看 JVM 堆内存使用的 jmap笔记
jmap的基本用法:查看堆内存信息: jmap --heap --pid 进程id不过jmap一般用来导出堆内存快照,如下:jmap -dump:live,format=b(二进制形式),file=/tmp/heap.bin(导出路径) 进程id再结合jhat,查看堆内存快照信息: jhat+路径浏览器打开 7000端口,显示堆内存类的信息:...
2021-07-04 12:55:49
259
原创 学会使用 JDK 工具(1):用于查看 JVM 配置参数的 jinfo笔记
jinfo 基本用法:一次jinfo使用过程:首先找到程序的进程id查找java版本及开启GC日志打印:设置堆内存快照路径:查看虚拟机参数(使用什么GC等等):
2021-07-04 11:28:47
169
原创 MySQL集群方案介绍笔记
**Percona XtraDB Cluster**(下文简称PXC集群)提供了MySQL高可用的一种实现方法。PXC集群以节点组成(推荐至少3节点,便于故障恢复,后面会讨论两节点的情况),每个节点都是基于常规的 MySQL/Percona Server,意味着你可以从集群中分离出某节点单独使用。集群中每个节点都包含完整的数据。PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(使用了Galera...
2021-05-21 10:25:00
159
3
原创 常见的线程池笔记
1.newSingleThreadExcutorimport java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class SingleThreadExectutor { public static void main(String[] args) { ExecutorService executorService = Executors.newSingleThr
2021-03-21 10:10:40
189
1
原创 线程池初认识笔记
使用线程池的好处:**1.**可以复用线程**2.**可以控制资源总量注:统一管理指线程池可以同时管理多个线程,比如3000多个线程,你不可能一个一个管理,使用线程池就可以统一管理,方便快捷。...
2021-03-17 18:19:45
83
原创 实现Runnable接口和继承Thread类对比
首先确定实现Runnable接口更好。1.从代码架构考虑,具体执行的任务即run()方法代码的内容,应该与创建线程的类Thread解耦,不应该把两者混为一谈。2.从资源节约的角度上,继承Thread的类,每次想新建一个任务,只能创建一个独立的线程,而创建一个线程的损耗是比较大的,而Runnable可以利用线程池工具,可以大大减少创建,销毁的损耗。3.从扩展的角度看,继续Thread的类,以后不能继承别的类,不利于以后扩展。两种方法本质对比:1.实现Runnable接口,最终调用target.run
2021-03-14 10:30:22
555
原创 Mysql有索引,但是不走索引的场景及解决方案笔记
总结本节讲解几种条件字段有索引,但是使用不了索引的场景。因此在写 SQL 时应该注意这些点:1.应该避免隐式转换2.like查询不能以%开头3.范围查询时,包含的数据比例不能太大4.不建议对条件字段做运算及函数操作...
2021-03-08 16:49:43
831
1
原创 线程池笔记
例如:import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class FixedThreadPoolTest { private static ExecutorService executorService = Executors.newFixedThreadPool(1); public static void main(...
2021-02-08 09:34:12
220
转载 油管最火KMP算法讲解,阿三哥的源代码!
package com.interview.string;/** * Date 09/22/2014 * @author tusroy * * Do pattern matching using KMP algorithm * * Runtime complexity - O(m + n) where m is length of text and n is length of pattern * Space complexity - O(n) */public class Sub
2021-01-06 19:10:17
446
原创 修正的判定/条件覆盖的方法一个例子
给定以下代码,请以判定表达式为测试重点,选择合适的覆盖指标设计测试用例。bool TestLogicCoverage(bool a, bool b, bool c){1 bool x = false;2 if( (a||b) && c)3 x = true;4 else5 x = false;6 return x;}参考答案如下:...
2020-11-29 22:37:25
4818
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人