jvm
横云断岭
在国内大型互联网公司负责6K+应用,80K+机器的Spring Boot微服务技术落地,关注开发体验,微服务,APM,应用诊断,dubbo开源。
Github: https://github.com/hengyunabc
展开
-
从JVM heap dump里查找没有关闭文件的引用
背景最近排查一个文件没有关闭的问题,记录一下。哪些文件没有关闭是比较容易找到的,查看进程的fd(File Descriptor)就可以。但是确定fd是在哪里被打开,在哪里被引用的就复杂点,特别是在没有重启应用的情况下。 在JVM里可以通过heap dump比较方便地反查对象的引用,从而找到泄露的代码。以下面简单的demo为例,Demo会创建一个临时文件,并且没有close掉:...原创 2018-07-02 02:03:00 · 1312 阅读 · 0 评论 -
深入JVM分析spring-boot应用hibernate-validator NoClassDefFoundError
问题可重现的Demo代码:demo.zip最近排查一个spring boot应用抛出hibernate.validator NoClassDefFoundError的问题,异常信息如下:Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.eng原创 2017-05-10 01:16:26 · 9378 阅读 · 6 评论 -
Java的LockSupport.park()实现分析
LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语。LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数: public native void unpark(Thread jthread); public native void park(boolean isAbsolute, long ti原创 2014-06-03 02:52:12 · 49600 阅读 · 17 评论 -
详细分析罕见的ClassCircularityError异常导致的StackOverflowError
先打一个广告。greys是一个很不错的java诊断工具:https://github.com/oldmanpushcart/greys-anatomy最近尝试用greys来实时统计jvm里的异常生成数量,在增强Throwable时,发现应用会抛出StackOverflowError。下面记录详细的分析过程。在真正分析之前,先介绍JVM对反射方法调用的优化和greys的工作原理。JVM对反射方法调用的原创 2016-04-10 13:11:46 · 8687 阅读 · 1 评论 -
从java进程里dump出类的class文件的小工具--dumpclass
Serviceability Agent想要查看一些被增强过的类的字节码,或者一些AOP框架的生成类,就需要dump出运行时的java进程里的字节码。从运行的java进程里dump出运行中的类的class文件的方法,所知道的有两种用agent attatch 到进程,然后利用Instrumentation和ClassFileTransformer就可以获取 到类的字节码了。使用sd-jdi.ja原创 2016-04-09 19:50:04 · 10253 阅读 · 0 评论 -
利用hsdis和JITWatch查看分析HotSpot JIT compiler生成的汇编代码
安装hsdis要查看JIT生成的汇编代码,要先装一个反汇编器:hsdis。从名字来看,即HotSpot disassembler。实际就是一个动态链接库。网络上有已经编绎好的文件,直接下载即可。国内的:http://hllvm.group.iteye.com/也可以自己编绎,只是编绎hsdis,还是比较快的。参考这里:http://www.chrisnewland.com...原创 2014-05-25 15:04:26 · 13835 阅读 · 5 评论 -
编绎调试HotSpot JVM及在Eclipse里调试
编绎整个OpenJDK要很久,而且有很多东西是不需要的。研究HotSpot的话,其实只要下HotSpot部分的代码就可以了。下面简单记录下编绎调试HotSpot一些步骤。一、编绎进入hotsopt的make目录下:cd code/cpp/openjdk/hotspot/make/用make help可以看到有很多有用的信息。当然查看Makefile文件,里面也有很多有用的注释。...原创 2013-12-08 16:20:29 · 9642 阅读 · 2 评论