怎样让你的代码更好的被JVM JIT Inlining

JVM JIT编译器优化技术有近100中,其中最最重要的方式就是内联(inlining)。方法内联可以省掉方法栈帧的创建,同时增加了CPU指令cache的命中率,方法内联还使让JIT编译器更多更深入的优化变成可能。本人在fastxml(速度比XPP3(基于xmlpull)还快的xml解析器)开源项目中针对方法内联进行了很多学习和实践,这里总结一下,介绍一下怎么让你的代码更好的被JVM JIT In[……]

全文阅读

Java JIT性能调优

JVM自动监控这所有方法的执行,如果某个方法是热点方法,JVM就计划把该方法的字节码代码编译成本地机器代码,同时还会在后续的执行过程中进行可能的更深层次的优化,编译成机器代码的过程是在独立线程中执行的,不会影响程序的执行;除次以外,JVM还对热点方法和很小的方法内联到调用方的方法中,减少方法栈的创建。这些就是JIT(just in time)。

JIT编译器有近100种优化方式

[captio[……]

全文阅读

【译】JVM的默认参数

如果在META-INF/MANIFEST.MF文件里面设置了Main-Class属性,那么你就可以很方便的通过java -classpath myapp.jar Main命令甚至更简洁的java -jar myapp.jar命令,来启动java虚拟机。这些命令会使用默认的设置来启动JVM。

要想看到JVM执行时使用在使用哪些参数以及其各参数默认值,可以使用这个命令:

java -XX:[......]

全文阅读

[译]生产环境中异常堆栈丢失的解决方案

今天我发现生产环境日志中有许多NullPointerException 没有堆栈。我们发现,当一些异常抛出的足够多时,JIT编译器会优化掉异常堆栈。下面的代码可以重现异常堆栈丢失的问题。我们的代码跑在jdk 1.6上(小版本号不记得了)

用下面的命令运行上面代码,异常丢失的情况就出现了(异常栈的长度从2变为了[……]

全文阅读