Java虚拟机运行期优化

这篇文章是把即时编译器这块再讲得具体一点内容也没多大意义,大部分都是一些概念上的东西对于实际开发、实际解决项目里面的疑难问题并没有什么太大的帮助。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网页空间、营销软件、网站建设、洞口网站维护、网站推广。
方法调用计数器就是说用于统计方法被调用的次数,它的默认阈值在Client模式下是1500次在Server模式下是10000次。当一个方法被调用时会检查方法是否存在被JIT编译过的版本,如果存在则优先使用编译后的本地代码来执行。如果不存在则将此方法的调用计数器值加1,然后判断方法调用计数器和回边计数器值之和是否超过方法调用计数器的阈值。如果已经超过阈值,那么将会向即时编译器提交一个该方法的代码编译请求。
如果这个参数不做任何设置,那么方法调用计数器统计的并不是方法被调用的绝对次数,而是一个相对的执行频率,即一段时间之内方法被调用的次数。当超过一定的时间限度,如果方法的调用次数仍然不足以让它提交给即时编译器编译,那这个方法的调用计数器就会少一半,这个过程称为方法的调用计数器热度的衰减,而这段时间就称为此方法统计的半衰周期。进行热度衰减的动作实在虚拟机进行垃圾回收时顺便进行的,可以使用虚拟机参数-XX:-UseCounterDecay来关闭热度衰减,让方法计数器统计方法调用的绝对次数,这样只要系统运行时间足够长,绝大部分方法都会被编译成本地代码。
这是小编对于方法调用计数器的全部理解。

分享标题:Java虚拟机运行期优化
文章来源:http://azwzsj.com/article/cgscsd.html