写点什么

Java 7 Hotspot 循环 Bug 详解

  • 2011-08-04
  • 本文字数:767 字

    阅读完需:约 3 分钟

上周Java 7 GA 发布后,新JIT 默认开启的优化中发现了一个问题。虽然这个问题最早是在 Lucene 搜索索引器的一个用例中出现的,但是它也有可能普遍存在于其他代码之中。

这个 Bug 引来了不少杞人忧天的文章,例如《Don’t use Java 7 for anything》,其中暗示所有循环都有问题。事实上,虽然存在一个有效的Bug(循环可能无法正确执行或者引起SIGSEGV 崩溃),但是这个Bug 从Java 6 开始就有了,如果开启了 -XX:+OptimizeStringConcat-XX:+AggressiveOpts优化就会发生这个问题。

这个问题实际只会发生在特定的循环(循环体可能会修改循环条件)中,该问题的补丁中对此做了说明。在以 -Xint(解释模式)运行的情况下不会发生这个问题,但在-server模式下就会有问题,服务器端应用程序很有可能就会使用这种模式。

如果问题不算太严重,出于此 Bug 带来的公众压力,Java 7 Update 1 中会包含该补丁。由于 Java 7 刚刚发布,目前还不会被用于生产环境,而且它也不是这方面发现的第一个问题(Oracle 在后续版本中修复了这个问题)。与此同时,问题描述中指出可以通过 -XX:-UseLoopPredicate标志来关闭这个特定的优化。

在 Lucene 和 Solr 项目中最早发现该问题的 Uwe Schindler 详细记录了 Bug 背后的故事,包含后续的反应(以及过激反应)。他记录到 Twitter 上大家的反应和后续的文章将 Bug 的优先级提高了,它的补丁将被放在 Java 7 Update 1 中,而不是 Java 7 Update 2。但是,他也说了,尽管高优先级Bug (会导致SIGSEGV)会在Java 7 Update 1 中修复,但是还有两个其他 Bug 仍是中优先级。

正如 Robert Muir 分析中所说的,因为这些优化都是在循环最少10,000 次后才被引入的,所以很多测试都覆盖不到。已经有了补丁,会纳入以后的Java 7 更新中,禁用LoopPredicate 优化也能让Java 7 摆脱这些问题。

查看英文原文: Java7 Hotspot Loop Bug Details

2011-08-04 02:414253
用户头像

发布了 135 篇内容, 共 63.7 次阅读, 收获喜欢 43 次。

关注

评论

发布
暂无评论
发现更多内容

【算法作业】实验一:轮流报数与鸡兔同笼

清风莫追

http协议简介

芯动大师

Cookie HTTP协议 Cookie反爬虫 10月月更

HTML的简介

芯动大师

HTML标准 10月月更 HTML元素

Zebec地平线节点运营计划,Web3流支付赛道或多一条全新公链

股市老人

【算法作业】实验五:神奇宝贝大军 & 到迷宫出口的最短路径

清风莫追

算法 10月月更

跟着卷卷龙一起学Camera--透镜组

卷卷龙

ISP camera 10月月更

Android Coder浅谈队列同步器(AQS)

子不语Any

后端 java; 10月月更

数字化转型,目的是为了转型还是数字化?

雨果

数字化转型

爬虫练习题(四)

张立梵

Python. 10月月更 爬虫案例

【C语言内功修炼】柔性数组的奥秘

Albert Edison

数组 C语言 10月月更 柔性数组

简述Docker改造传统应用的流程

穿过生命散发芬芳

Docker 10月月更

大数据ELK(二十):FileBeat是如何工作的

Lansonli

Filebeat 10月月更

_fitoa_word的实现:一个整型数据是如何转成字符串的呢?

桑榆

源码刨析 10月月更 C++

Hacktoberfest 2022:Jenkins maven-snapshot-check Plugin 的改进实践

donghui

jenkins Hacktoberfest

应用监控可视化工具Grafana&Kibana对比

阿泽🧸

10月月更 监控可视化

Python基础(十三) | 机器学习sklearn库详解与应用

timerring

Python 机器学习 sklearn 10月月更

企业的数据资产怎么盘?统筹规划,摸清家底

雨果

数据资产管理

一起学习设计模式:备忘录模式——软件的“后悔药”

宇宙之一粟

设计模式 备忘录模式 10月月更

【玩物立志-scratch少儿编程】骑上小摩托(动态背景+摄像头控制操作)

清风莫追

10月月更

基于微信小程序的老年大学招生报名小程序开发笔记

CC同学

爬虫的简介

芯动大师

Python语法 10月月更 爬虫简介

六类网线、七类网线、八类网线区别有哪些?

wljslmz

10月月更 弱电 以太网线 综合布线

2022-10-09:我们给出了一个(轴对齐的)二维矩形列表 rectangles 。 对于 rectangle[i] = [x1, y1, x2, y2],其中(x1,y1)是矩形 i 左下角的坐

福大大架构师每日一题

算法 rust 福大大

用OptaPlanner进行车辆路线优化

积木编程

跟着卷卷龙一起学Camera--压缩与存储

卷卷龙

ISP camera 10月月更

跟着卷卷龙一起学Camera--BM3D

卷卷龙

ISP camera 10月月更

强化学习发现矩阵乘法工赋开发者社区 | DeepMind再登Nature封面推出AlphaTensor

工赋开发者社区

什么是DataOps?DataOps只是Data加上Ops吗

雨果

DevOps

面试突击89:事务隔离级别和传播机制有什么区别?

王磊

Spring之IOC

楠羽

笔记 spring 源码 10月月更

Java 7 Hotspot循环Bug详解_Java_Alex Blewitt_InfoQ精选文章