自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java 7 Hotspot循環(huán)Bug詳解

開(kāi)發(fā) 后端
上周Java 7 GA發(fā)布后,新JIT默認(rèn)開(kāi)啟的優(yōu)化中發(fā)現(xiàn)了一個(gè)問(wèn)題。雖然這個(gè)問(wèn)題最早是在Lucene搜索索引器的一個(gè)用例中出現(xiàn)的,但是它也有可能普遍存在于其他代碼之中。

上周Java 7 GA發(fā)布后,新JIT默認(rèn)開(kāi)啟的優(yōu)化中發(fā)現(xiàn)了一個(gè)問(wèn)題。雖然這個(gè)問(wèn)題最早是在Lucene搜索索引器的一個(gè)用例中出現(xiàn)的,但是它也有可能普遍存在于其他代碼之中。

這個(gè)Bug引來(lái)了不少杞人憂天的文章,例如《Don't use Java 7 for anything》,其中暗示所有循環(huán)都有問(wèn)題。事實(shí)上,雖然存在一個(gè)有效的Bug(循環(huán)可能無(wú)法正確執(zhí)行或者引起SIGSEGV崩潰),但是這個(gè)Bug 從Java 6開(kāi)始就有了,如果開(kāi)啟了-XX:+OptimizeStringConcat或-XX:+AggressiveOpts優(yōu)化就會(huì)發(fā)生這個(gè)問(wèn)題。

這個(gè)問(wèn)題實(shí)際只會(huì)發(fā)生在特定的循環(huán)(循環(huán)體可能會(huì)修改循環(huán)條件)中,該問(wèn)題的補(bǔ)丁中對(duì)此做了說(shuō)明。在以-Xint(解釋模式)運(yùn)行的情況下不會(huì)發(fā)生這個(gè)問(wèn)題,但在-server模式下就會(huì)有問(wèn)題,服務(wù)器端應(yīng)用程序很有可能就會(huì)使用這種模式。

如果問(wèn)題不算太嚴(yán)重,出于此Bug帶來(lái)的公眾壓力,Java 7 Update 1中會(huì)包含該補(bǔ)丁。由于Java 7剛剛發(fā)布,目前還不會(huì)被用于生產(chǎn)環(huán)境,而且它也不是這方面發(fā)現(xiàn)的第一個(gè)問(wèn)題(Oracle在后續(xù)版本中修復(fù)了這個(gè)問(wèn)題)。與此同時(shí),問(wèn)題描述中指出可以通過(guò) -XX:-UseLoopPredicate標(biāo)志來(lái)關(guān)閉這個(gè)特定的優(yōu)化。

在Lucene和Solr項(xiàng)目中最早發(fā)現(xiàn)該問(wèn)題的Uwe Schindler詳細(xì)記錄了Bug背后的故事,包含后續(xù)的反應(yīng)(以及過(guò)激反應(yīng))。他記錄到Twitter上大家的反應(yīng)和后續(xù)的文章將Bug的優(yōu)先級(jí)提高了,它的補(bǔ)丁將被放在Java 7 Update 1中,而不是Java 7 Update 2。但是,他也說(shuō)了,盡管高優(yōu)先級(jí)Bug(會(huì)導(dǎo)致SIGSEGV)會(huì)在Java 7 Update 1中修復(fù),但是還有兩個(gè)其他Bug仍是中優(yōu)先級(jí)。

正如Robert Muir的分析中所說(shuō)的,因?yàn)檫@些優(yōu)化都是在循環(huán)最少10,000次后才被引入的,所以很多測(cè)試都覆蓋不到。已經(jīng)有了補(bǔ)丁,會(huì)納入以后的Java 7更新中,禁用LoopPredicate優(yōu)化也能讓Java 7擺脫這些問(wèn)題。

【編輯推薦】

  1. 別用Java 7?你是在開(kāi)玩笑嗎?
  2. 小心bug!慎用Java 7
  3. NetBeans新版發(fā)布,全面支持JDK 7
  4. Java 7正式發(fā)布
  5. Oracle推出最新Java SE 7版

 

責(zé)任編輯:艾婧 來(lái)源: InfoQ
相關(guān)推薦

2011-07-29 16:55:44

Java 7

2020-12-17 07:39:30

HashMap死循環(huán)數(shù)據(jù)

2010-02-23 14:56:18

WCF Bug

2023-09-25 08:08:56

CAA開(kāi)發(fā)者團(tuán)隊(duì)

2009-12-29 13:22:17

2024-01-22 10:49:55

C++for循環(huán)

2009-07-27 10:08:48

Java 7動(dòng)態(tài)語(yǔ)言JVM

2013-12-09 11:01:41

2021-04-15 09:07:52

hotspotJavaC++

2010-11-05 09:47:11

OracleJava虛擬機(jī)

2025-03-31 03:25:00

2010-01-25 15:40:38

Java 6 u18Hotspot垃圾回收

2013-07-18 09:27:25

Hotspot 2.0Wi-FiWLAN

2022-07-05 08:34:22

虛擬機(jī)JavaJVM

2010-09-08 17:15:45

SQL循環(huán)結(jié)構(gòu)

2021-09-10 00:34:22

Java 線程啟動(dòng)

2012-08-06 09:26:19

Java虛擬機(jī)垃圾回收

2020-12-11 05:57:01

Python循環(huán)語(yǔ)句代碼

2009-10-20 14:08:00

642-892 Hot

2020-06-15 08:39:41

調(diào)試工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)