2021
08-06
08-06
详解Java编译优化之循环展开和粗化锁
目录循环展开和粗化锁分析Assembly日志禁止Loopunrolling循环展开和粗化锁我们先来回顾一下什么是循环展开。循环展开就是说,像下面的循环遍历的例子:for(inti=0;i<1000;i++){x+=0x51;}因为每次循环都需要做跳转操作,所以为了提升效率,上面的代码其实可以被优化为下面的:for(inti=0;i<250;i++){x+=0x144;//0x51*4}注意上面我们使用的是16进制数字,至于为什么要使用16进制呢?这是为了方便...
继续阅读 >
先讲一下java中的反射:反射就是将类别的各个组成部分进行剖析,可以得到每个组成部分,就可以对每一部分进行操作反射机制应用场景:逆向代码、动态生成类框架等,使用反射机制能够大大的增强程序的扩展性。反射的基本步骤:首先获得Class对象,然后实例化对象,获得类的属性、方法或者构造函数,最后访问属性、调用方法、调用构造函数创建对象。而invoke()方法就是用来执行指定对象的方法。在比较复杂的程序或框架中来使用反射技...
目录一、介绍二、jinfo命令格式三、option四、执行样例五、增加JVM打印详细GC日志参数一、介绍jinfo(ConfigurationInfoforJava)的作用是实时查看和调整虚拟机各项参数。使用jps命令的-v参数可以查看虚拟机启动时显式指定的参数列表,但如果想知道未被显式指定的参数的系统默认值,除了去找资料外,就只能使用jinfo的-flag选项进行查询了(如果只限于JDK6或以上版本的话,使用java-XX:+PrintFlagsFinal查看参数默认值也是一...