JDK的sql设计不合理导致的驱动类初始化死锁问题 (club.perfma.com)
当我们一个系统既需要mysql驱动,也需要oracle驱动的时候,在并发加载初始化这些驱动类的过程中产生死锁的可能性非常大,下面是一个模拟的例子,对于Thread2的实现其实是jdk里java.sql.DriverService的逻辑,也是我们第一次调用java.sql.DriverManager.registerDriver注册一个驱动实例要走的逻辑(jdk1.6下),不过这篇文章是使用我们生产环境的一个系统的线程dump和内存dump为基础进行分析展开的。
by @PerfMa社区 17小时前 分享 查看详情
类初始化导致死锁 (club.perfma.com)
本文要说的是之前在生产环境上碰到,是类初始化导致的死锁,恩,你没看错,确实是类初始化导致的死锁,本文将这个问题描述的场景更加通用化了。
by @PerfMa社区 2020-03-26 10:22 分享 查看详情
JVM源码分析之javaagent原理完全解读 (club.perfma.com)
本文重点讲述javaagent的具体实现,因为它面向的是我们java程序员,而且agent都是用java编写的,不需要太多的c/c++编程基础,不过这篇文章里也会讲到JVMTIAgent(c实现的),因为javaagent的运行还是依赖于一个特殊的JVMTIAgent。
by @PerfMa社区 2020-03-24 10:25 分享 查看详情
JVM源码分析之堆外内存完全解读 (club.perfma.com)
说到堆外内存,那大家肯定想到堆内内存,这也是我们大家接触最多的,我们在jvm参数里通常设置-Xmx来指定我们的堆的最大值,不过这还不是我们理解的Java堆
by @PerfMa社区 2020-03-19 11:02 分享 查看详情
JVM源码分析之Object.wait/notify(All)完全解读 (club.perfma.com)
本文有些东西是我自己的理解,比如为什么JDK一开始要这么设计,初衷是什么,没怎么去找相关资料,所以只能谈谈自己的理解,所以大家看到文章之后可以谈谈自己的看法,对于实现部分我倒觉得说清楚问题不大,code is here,看明白了就知道怎么回事了。
by @PerfMa社区 2020-03-17 10:12 分享 查看详情
JVM 源码分析之一个 Java 进程究竟能创建多少线程 (club.perfma.com)
虽然这篇文章的标题打着JVM源码分析的旗号,不过本文不仅仅从 JVM 源码角度来分析,更多的来自于 Linux Kernel 的源码分析,今天要说的是 JVM 里比较常见的一个问题。
by @PerfMa社区 2020-03-12 09:51 分享 查看详情
JVM源码分析之jstat工具原理完全解读 (club.perfma.com)
jstat是hotspot自带的工具,和java一样也位于JAVA_HOME/bin下面,我们通过该工具可以实时了解当前进程的gc,compiler,class,memory等相关的情况。
by @PerfMa社区 2020-03-10 10:24 分享 查看详情
JVM源码分析之不可控的堆外内存 (club.perfma.com)
碰到一个比较奇怪的问题,在设置了-XX:MaxDirectMemorySize=1G的前提下,然后统计所有DirectByteBuffer对象后面占用的内存达到了7G,远远超出阈值,这个问题很诡异,于是好好查了下原因,虽然最终发现是我们统计的问题,但是期间发现的其他一些问题还是值得分享一下的。
by @PerfMa社区 2020-03-06 10:19 分享 查看详情
JVM源码分析之不保证顺序的Class.getMethods (club.perfma.com)
本文要说的内容是今天公司有个线上系统踩了一个坑,并且貌似还造成了一定的影响,后来系统相关的人定位到了是java.lang.Class.getMethods返回的顺序可能不同机器不一样,有问题的机器和没问题的机器这个返回的方法列表是不一样的,后面他们就来找到我求证是否jdk里有这潜规则。
by @PerfMa社区 2020-03-03 12:53 分享 查看详情
据说99.99%的人都会答错的类加载的问题 (club.perfma.com)
在看下面文章之前,我觉得你可以先思考一个问题:同一类加载器对象是否可加载同一类文件多次且得到多个不同的Class对象(单选)
A.不知道 B.可以 C.不可以
by @PerfMa社区 2020-02-12 15:43 分享 查看详情
消失的死锁 (club.perfma.com)
如果java层面发生了死锁,当我们使用jstack命令的时候其实是可以将死锁的信息给dump出来的
by @PerfMa社区 2020-02-05 11:15 分享 查看详情
一道面试题引发的对 Java 内存模型的一点疑问​ (mp.weixin.qq.com)
一道面试题引发的对 Java 内存模型的一点疑问​、JVM STW 里的 no vm operation 是怎么发生的、通过GarbageCollectorMXBean获取到的fgc次数耗时与jstat获取到的不一致等实战案例
by @PerfMa社区 2020-01-15 10:27 分享 查看详情