首页域名资讯 正文

Java 虚拟机总结给面试的你

2024-12-04 4 0条评论

Java 虚拟机总结给面试的你

  • 作者:新网
  • 来源:新网
  • 浏览:100
  • 2018-05-15 14:39:33

本篇主要针对Java虚拟机的晚期编译优化,Java内存模型与线程,线程安全与锁优化进行总结,其余部分总结请点击Java虚拟总结上篇 ,Java虚拟机总结篇。

   本篇主要针对Java虚拟机的晚期编译优化,Java内存模型与线程,线程安全与锁优化进行总结,其余部分总结请点击Java虚拟总结上篇 ,Java虚拟机总结篇。

< div>  一.晚期运行期优化   即时编译器JIT的作用就是热点代码转换为平台相关的机器码,并进行优化,它并不是一个虚拟机所必须的部分,只能说有它是锦上添花。   热点代码   热点代码分类    被多次调用的方法    被多次调用的循环体   热点探测判定方法   ·基于采样的热点探测,虚拟机周期性地检查栈顶,发现某个方法经常出现在栈顶,那么这个方法就是热点方法,简单高效但不精确    基于计数器热点探测,为每个方法建立计数器来统计执行次数,超过阈值就是热点方法,Hotpot就是采用这种方法。分为方法计数器(统计方法),回边计数器(统计循环)   编译过程(Client Complier)   第一阶段:将字节码构造成高级中间代码表示(HIR)   第二阶段:将HIR变为LIR   第三阶段:使用线性扫描算法,在LIR上分配寄存器,产生机器代码   优化方法   公共子表达式优化   当一个表达式A的结果已经计算过了,且A中的所有变量都没有发生过变化,那么下一次要用到A时就不用计算了,而是直接取之前A的结果。   数组边界检查消除   方法内联   逃逸分析   逃逸的定义:一个在方法里定义的变量,作为参数传递给其他方法(方法逃逸),或者赋值给类变量(线程逃逸)。   优化方法:   栈上分配:不会逃逸的对象就不在堆上分配了,就在栈上分配,那么对象所占的 空间就可以随栈帧的出栈而销毁,减少垃圾收集系统的压力。   同步消除:如果一个变量肯定不会逃逸出线程,那么关于这个变量的同步措施就可以去掉。

文章版权及转载声明

本文作者:亿网 网址:https://edns.com/ask/post/149480.html 发布于 2024-12-04
文章转载或复制请以超链接形式并注明出处。