线上debug诊断神器-Arthas
当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。
Java高并发编程-线程入门
线程详解在学习计算机的过程中,我们都听过一个词“并行”。并行在计算机中是非常常见的一种操作,是指一系列的计算机执行的任务在计算机中同时被执行。例如在编程的时候,可以听歌,在写文档的时候,还可以去查询其他的文档等等。
你了解volatile关键字的作用吗?
【死记硬背】volatile关键字主要用于保持内存的变量可见性和禁止重排序。变量可见性:当一个线程改变了变量的值,那么新的值对于其他线程也是可以立即获取到的。禁止重排序:在执行程序时为了提高性能,编译器和处理器常常会对指令做重排序,而volatile 则禁止了指令重排。
CPU飙高,频繁GC,怎么排查?
作者 | 爱宝贝丶来源| https://my.oschina.net/zhangxufeng/blog/3017521处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。
看起来是线程池的BUG,但是我认为是源码设计不合理
前几天看到一个 JDK 线程池的 BUG,我去了解了一下,摸清楚了它的症结所在之后,我觉得这个 BUG 是属于一种线程池方法设计不合理的地方,而且官方在知道这个 BUG 之后表示:确实是个 BUG,但是我就不修复了吧,你就当这是一个 feature 吧。
死锁的 4 种排查工具
接下来,我们先来演示一下 Java 中最简单的死锁,我们创建两个锁和两个线程,让线程 1 先拥有锁 A,然后在 1s 后尝试获取锁 B,同时我们启动线程 2,让它先拥有锁 B,然后在 1s 之后尝试获取锁 A,这时就会出现相互等待对方释放锁的情况,从而造成死锁的问题,具体代码如下:以上程序的执行结果如下:
带着8个问题5分钟教你学会Arthas诊断工具
如果想精确的定位到具体的类实例,可以通过指定 classloader name 或者 classloader hash,如下所示:❝。
1.3w字,一文详解死锁
死锁指的是两个或两个以上的运算单元,都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。
面试必问的CAS,你懂了吗?
概述CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。案例介绍CAS之前,我们先来看一个例子。