java中方法不要写太长的真正原因-DontCompileHugeMethods
来源:互联网 发布:数据分析与处理 编辑:程序博客网 时间:2024/06/05 00:22
java中一般建议一个方法不要写的过长,不方便维护和阅读是其中的一个原因,但是其真正性能的原因大家知道吗?
我们知道,JVM一开始是以解释方式执行字节码的。当这段代码被执行的次数足够多以后,它会被动态优化并编译成机器码执行,执行速度会大大加快,这就是所谓的JIT编译。
hotsopt源码中有一句
if (DontCompileHugeMethods && m->code_size() > HugeMethodLimit) return false;
当DontCompileHugeMethods=true且代码长度大于HugeMethodLimit时,方法不会被编译。
DontCompileHugeMethods与HugeMethodLimit的值在globals.hpp中定义:
product(bool, DontCompileHugeMethods, true, "don't compile methods > HugeMethodLimit")develop(intx, HugeMethodLimit, 8000, "don't compile methods larger than this if +DontCompileHugeMethods")
上面两个参数说明了Hotspot对字节码超过8000字节的大方法有JIT编译限制,这就是大方法不会被JIT编译的原因。由于使用的是product mode的JRE,我们只能尝试关闭DontCompileHugeMethods,即增加VM参 数”-XX:-DontCompileHugeMethods”来强迫JVM编译大方法。但是不建议这么做,因为一旦Code Cache满了,HotSpot会停止所有后续的编译任务,虽然已编译的代码不受影响,但是后面的所有方法都会强制停留在纯解释模式。
http://enetor.iteye.com/blog/976070
上面两个参数说明了Hotspot对字节码超过8000字节的大方法有JIT编译限制,这就是大方法不会被JIT编译的原因。由于使用的是product mode的JRE,我们只能尝试关闭DontCompileHugeMethods,即增加VM参 数”-XX:-DontCompileHugeMethods”来强迫JVM编译大方法。但是不建议这么做,因为一旦Code Cache满了,HotSpot会停止所有后续的编译任务,虽然已编译的代码不受影响,但是后面的所有方法都会强制停留在纯解释模式。
阅读全文
0 0
- java中方法不要写太长的真正原因-DontCompileHugeMethods
- 二战中日军南下的真正原因
- js中按钮实效真正的原因
- java 内存泄漏的真正原因
- <a>链接四个伪类书写顺序的真正原因
- java swing中setVisible(true);方法的真正作用
- 2012的真正原因!
- 千万不要在构造器中调用可覆 写的方法。
- 不要太长 想知道哪里有有关C#的小程序
- 不要太长 想知道哪里有C#的有关小程序
- 代码混淆时,不要在bean中写其他方法
- EXT.NET中 GridPanel中 列名太长换行的方法
- JAVA中重写自己的hashCode()方法原因
- 中国人聪明的真正原因
- 诸葛亮杀魏延的真正原因
- 中国农民贫困的真正原因
- 中国农民真正贫困的原因
- excel中精度损失导致太长的数字后面全变成了零的解放方法
- 修改Tomcat下项目配置文件
- postman的安装与使用(模拟请求)
- MetaProgramming Chapter6
- switch case
- LINUX下EXT3文件系统大小有2T限制
- java中方法不要写太长的真正原因-DontCompileHugeMethods
- volley学习那点事
- 反射处理java泛型
- 可用的直播流地址
- Matlab图像几何变换之图像旋转
- Can not find the tag directory "/WEB-INF/tags"解决办法
- NetCDF二维数据的写入方法
- 解决macOS无法播放Coursera在线视频
- 适配器模式