关闭

深入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...
阅读(1416) 评论(5)

详细分析罕见的ClassCircularityError异常导致的StackOverflowError

先打一个广告。greys是一个很不错的java诊断工具:https://github.com/oldmanpushcart/greys-anatomy最近尝试用greys来实时统计jvm里的异常生成数量,在增强Throwable时,发现应用会抛出StackOverflowError。下面记录详细的分析过程。在真正分析之前,先介绍JVM对反射方法调用的优化和greys的工作原理。JVM对反射方法调用的...
阅读(2467) 评论(0)

从java进程里dump出类的class文件的小工具--dumpclass

Serviceability Agent想要查看一些被增强过的类的字节码,或者一些AOP框架的生成类,就需要dump出运行时的java进程里的字节码。从运行的java进程里dump出运行中的类的class文件的方法,所知道的有两种 用agent attatch 到进程,然后利用Instrumentation和ClassFileTransformer就可以获取 到类的字节码了。 使用sd-jdi.ja...
阅读(3197) 评论(0)

Java的LockSupport.park()实现分析

LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语。LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数: public native void unpark(Thread jthread); public native void park(boolean isAbsolute, long ti...
阅读(18058) 评论(4)

利用hsdis和JITWatch查看分析HotSpot JIT compiler生成的汇编代码

安装hsdis 要查看JIT生成的汇编代码,要先装一个反汇编器:hsdis。从名字来看,即HotSpot disassembler。 实际就是一个动态链接库。网络上有已经编绎好的文件,直接下载即可。 国内的:http://hllvm.group.iteye.com/ 也可以自己编绎,只是编绎hsdis,还是比较快的。 参考这里:http://www.chrisnewland.com/bu...
阅读(6515) 评论(2)

编绎调试HotSpot JVM及在Eclipse里调试

编绎整个OpenJDK要很久,而且有很多东西是不需要的。研究HotSpot的话,其实只要下HotSpot部分的代码就可以了。 下面简单记录下编绎调试HotSpot一些步骤。 一、编绎 进入hotsopt的make目录下: cd code/cpp/openjdk/hotspot/make/ 用make help可以看到有很多有用的信息。当然查看Makefile文件,里面也有很多有用的注...
阅读(6703) 评论(2)
    个人资料
    • 访问:1697132次
    • 积分:11689
    • 等级:
    • 排名:第1444名
    • 原创:129篇
    • 转载:29篇
    • 译文:2篇
    • 评论:349条
    博客专栏
    文章分类
    最新评论