【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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:413930
用户头像

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

关注

评论

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

设计原则 — S 单一职责原则

Lemoon Can

面向对象设计原则 设计原则

BSN-DDC基础网络DDC SDK详细设计(八):示例

BSN研习社

BSN-DDC

【零代码】6步轻松完成 Kafka 实时数据接入 MatrixDB

YMatrix 超融合数据库

json kafka 零代码 超融合数据库 YMatrix

Verilog 数据类型

智趣匠

Verilog Verilog数据类型 Verilog语法

金融行业业财融合实践:5A全面预算管理,赋能金融企业高质量发展

B Impact

数据治理:数据访问也需要治理!

用友BIP

《媒体大数据分类分级指南》团体标准正式发布,易观分析参与编制

易观分析

大数据 媒体

LinkedIn创始人对话 OpenAI CEO :创业公司的机会—价值中间层

B Impact

如何打造用户“上瘾”的产品?

产品海豚湾

产品经理 用户体验 产品运营 用户思维 12月月更

mysql数据库之schema与数据类型优化

@下一站

程序设计 代码优化 MySQL优化 11月日更 11月月更

SeaweedFS 高可用方案最佳实践

冰心的小屋

分布式文件系统 SeaweedFS

一块钱能做什么?

白洞计划

FLStudio21水果体验版更新下载及功能介绍

茶色酒

flstudio FLStudio21

CleanMyMac4.12Crack版本弹出密码如何解决教程

茶色酒

CleanMyMac CleanMyMac X CleanMyMac X2023

架构学习笔记1:什么是架构设计?

生活需要激情

架构训练营10期

React源码分析5-commit

goClient1992

React

精准管控 | AIRIOT数字油库智能化解决方案

AIRIOT

物联网 数字油库

网络安全之反序列化漏洞分析

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

Spark RDD分区数与分区器源码解析

数新网络官方账号

spark

架构实战 模块一:作业

Geek_6c89ef

读者回信:为什么畅捷通可能会迎来戴维斯双杀?

B Impact

CorelDRAW软件2023最新版本更新下载

茶色酒

CorelDraw2023 CorelDraw

React源码分析6-hooks源码

goClient1992

React

Nexus3常用功能备忘

程序员欣宸

Java maven nexus3 12月月更

建立数据地图,让数据资产“活”起来

数造万象

行话|入局「软件定义汽车」,你真的准备好了吗?

极狐GitLab

DevOps 汽车软件安全 软件定义汽车 极狐GitLab 汽车软件开发

打造五层轻量监控体系

穿过生命散发芬芳

监控体系 12月月更

「虚拟社交」爆火,资深玩家「当道」

融云 RongCloud

社交 虚拟形象

NGINX 开源社区捉虫征集令

NGINX开源社区

有奖征文 | 当我们谈操作系统时,我们在谈什么?

腾源会

开源 操作系统 opencloudOS

React源码分析4-深度理解diff算法

goClient1992

React

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