×
新网 > 虚机资讯 > 正文

Java 虚拟机运行期优化

  • 作者:吴军
  • 来源:
  • 2018-05-17 11:12:19

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

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

20160201161415_8290.jpg

方法调用计数器就是说用于统计方法被调用的次数,它的默认阈值在Client模式下是1500次在Server模式下是10000次。当一个方法被调用时会检查方法是否存在被JIT编译过的版本,如果存在则优先使用编译后的本地代码来执行。如果不存在则将此方法的调用计数器值加1,然后判断方法调用计数器和回边计数器值之和是否超过方法调用计数器的阈值。如果已经超过阈值,那么将会向即时编译器提交一个该方法的代码编译请求。
如果这个参数不做任何设置,那么方法调用计数器统计的并不是方法被调用的绝对次数,而是一个相对的执行频率,即一段时间之内方法被调用的次数。当超过一定的时间限度,如果方法的调用次数仍然不足以让它提交给即时编译器编译,那这个方法的调用计数器就会少一半,这个过程称为方法的调用计数器热度的衰减,而这段时间就称为此方法统计的半衰周期。进行热度衰减的动作实在虚拟机进行垃圾回收时顺便进行的,可以使用虚拟机参数-XX:-UseCounterDecay来关闭热度衰减,让方法计数器统计方法调用的绝对次数,这样只要系统运行时间足够长,绝大部分方法都会被编译成本地代码。
这是小编对于方法调用计数器的全部理解。

  • 相关专题

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

免费咨询获取折扣

Loading