如果javac后运行如下程序:
class runhang {
public static void main(String[] args){
System.out.println("Test1");
double d = Double.parseDouble("2.2250738585072012e-308");
System.out.println("The value of D is: " + d);
}
}
就会发现程序hung了,并且某一核的CPU使用率接近100%, 查看相应的thread dump是这样:
"main" prio=10 tid=0x08058800 nid=0x8bf runnable [0xb7fce000..0xb7fcf1f8]
java.lang.Thread.State: RUNNABLE
at sun.misc.FloatingDecimal.countBits(FloatingDecimal.java:86)
at sun.misc.FloatingDecimal.doubleToBigInt(FloatingDecimal.java:205)
at sun.misc.FloatingDecimal.doubleValue(FloatingDecimal.java:1463)
at java.lang.Double.parseDouble(Double.java:510)
at runhang.main(runhang.java:4)
如果编译如下程序,发现javac会hung住,CPU同样会有单核100%现象:
class compilehang {
public static void main(String[] args){
double d = 2.2250738585072012e-308;
System.out.println("Test: " + d);
}
}
相应的thread dump是:
"main" prio=10 tid=0x08058800 nid=0x91b runnable [0xb7fce000..0xb7fcf1f8]
java.lang.Thread.State: RUNNABLE
at sun.misc.FloatingDecimal.doubleToBigInt(FloatingDecimal.java:201)
at sun.misc.FloatingDecimal.doubleValue(FloatingDecimal.java:1463)
at java.lang.Double.valueOf(Double.java:475)
at com.sun.tools.javac.parser.Parser.literal(Parser.java:526)
at com.sun.tools.javac.parser.Parser.term3(Parser.java:952)
at com.sun.tools.javac.parser.Parser.term2(Parser.java:686)
at com.sun.tools.javac.parser.Parser.term1(Parser.java:657)
at com.sun.tools.javac.parser.Parser.term(Parser.java:613)
at com.sun.tools.javac.parser.Parser.term(Parser.java:595)
at com.sun.tools.javac.parser.Parser.expression(Parser.java:585)
at com.sun.tools.javac.parser.Parser.variableInitializer(Parser.java:1446)
at com.sun.tools.javac.parser.Parser.variableDeclaratorRest(Parser.java:2074)
at com.sun.tools.javac.parser.Parser.variableDeclaratorsRest(Parser.java:2045)
at com.sun.tools.javac.parser.Parser.variableDeclarators(Parser.java:2028)
at com.sun.tools.javac.parser.Parser.blockStatements(Parser.java:1557)
at com.sun.tools.javac.parser.Parser.block(Parser.java:1462)
at com.sun.tools.javac.parser.Parser.block(Parser.java:1476)
at com.sun.tools.javac.parser.Parser.methodDeclaratorRest(Parser.java:2532)
at com.sun.tools.javac.parser.Parser.classOrInterfaceBodyDeclaration(Parser.java:2481)
at com.sun.tools.javac.parser.Parser.classOrInterfaceBody(Parser.java:2408)
at com.sun.tools.javac.parser.Parser.classDeclaration(Parser.java:2253)
at com.sun.tools.javac.parser.Parser.classOrInterfaceOrEnumDeclaration(Parser.java:2191)
at com.sun.tools.javac.parser.Parser.typeDeclaration(Parser.java:2180)
at com.sun.tools.javac.parser.Parser.compilationUnit(Parser.java:2126)
at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:509)
at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:550)
at com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:801)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727)
at com.sun.tools.javac.main.Main.compile(Main.java:353)
at com.sun.tools.javac.main.Main.compile(Main.java:279)
at com.sun.tools.javac.main.Main.compile(Main.java:270)
at com.sun.tools.javac.Main.compile(Main.java:69)
at com.sun.tools.javac.Main.main(Main.java:54)
呵呵,有意思吧,当然这么严重的BUG,Oracle自然得运用FPU。
至于BUG内幕,大家可以参考http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/
分享到:
相关推荐
NB T 47018.1~NB T47018.5-2017承压设备用焊接材料订货技术条件和编制说明;NB T 47018.1~NB T47018.5-2017承压设备用焊接材料订货技术条件和编制说明
1637679600000_com.eg.android.AlipayGphone-main.2nd
NB-IoT_物联网精品资料大全33个合集: 5G测试需求及热点方案研究NB-IoT专题.pdf eMTC(eRAN12.1_04).pdf Feature_Perspectives_-_NB-IoT.pdf Huawei-NB-IoT-Partner-List-Issue-2.0.pdf HW-NB-IoT 参数权限申请.pdf ...
AreTheseLinesStraight-source.nb BoilingPointOfWaterOnSeveralPlanets-source.nb CassiniSpaceflight-source.nb CellularAutomataOnTrivalentNetworks-source.nb CIEChromaticityDiagram-source.nb CogwheelDrive-...
### NB/T 47003.2-2009 固体料仓 #### 一、标准概述 **NB/T 47003.2-2009**是中国关于固体料仓的一项行业标准,该标准部分替代了**JB/T 4735—1997**中的相关内容。此标准主要规定了固体料仓的设计、制造、检验与...
Nvidia-Driver-531.79-notebook-win10-win11-64bit-dch-whql.exe
能源局2018版充电设备标准,替代2013版。国网、南网以及政府招标等一般都需要满足能源局的标准,大家可以仔细研读一下,标准本身是国标的一个解释以及补充
libopencore-amrnb.a是针对8kHZ采样速率的,并提供了encode和decode的方法 libopencore-amrwb.a是针对16Khz采样速率的,不过只提供了decode的方法
《iOS7.1环境下libopencore-amrnb与libopencore-amrwb库的使用详解》 在iOS开发中,音频处理是一项至关重要的任务,特别是在语音通信和多媒体应用中。AMR(Adaptive Multi-Rate)是一种广泛应用于移动通信中的音频...
2. **libopencore-amrnb.a和libopencore-amrwb.a**: - 这两个库文件是OpenCORE AMR编解码器的实现,用于处理AMR-NB和AMR-WB音频数据。`libopencore-amrnb.a`负责窄带AMR的编码和解码,而`libopencore-amrwb.a`服务...
这个压缩包"oracle-jmesdk-8-0-rr-nb-plugins.zip"包含了用于NetBeans集成开发环境(IDE)的插件,使得开发者能够在NetBeans平台上方便地进行Java ME应用的创建和调试。 标签中的"Plugins"指的是这些插件,它们是扩展...
大数据Python科学计算库-Numpy实战:numpy代码 练习题.ipynb 9-读写.ipynb 8-随机模块.ipynb ...nb 4-排序.ipynb 5-数组形状.ipynb 6-数组生成.ipynb 7-运算.ipynb 8-随机模块.ipynb 9-读写.ipynb 练习题.i pynb
标题中的“libopencore-amrnb.a”和“libopencore-armwb.a”是两个重要的库文件,它们在Android或嵌入式系统中广泛使用,尤其在处理音频编码和解码时。这两个文件是OpenCORE开源项目的一部分,旨在提供高效能的AMR-...
NBT47065.1-2018鞍座速查,EXCEL查询鞍座尺寸及外形
做家电设计的需要仔细阅读,很多内容涉及产品设计的关键.
NBT 47013.4-2015 承压设备无损检测 第4部分:磁粉检测
标题中的“libopencore-amrnb.a,libopencore-amrwb.a,arm64位支持”涉及的是OpenCore AMR编解码库在不同架构上的实现,特别是对于64位ARM(arm64)平台的支持。OpenCore AMR是开源的音频编码和解码库,它主要处理 ...
NBT 33008.1-2013 电动汽车充电设备检验试验规范 第1部分非车载充电机
amrnb-11.0.0.0.tar.bz2 amrwb-11.0.0.0.tar.bz2 faac-1.28.tar.gz faad2-2.7.tar.gz ffmpeg-4.0.2.tar.bz2 freetype-2.9.1.tar.bz2 lame-3.99.5.tar.gz last_x264.tar.bz2 libdca-0.0.2.tar.gz libogg-1.1.3.tar.gz...
海康威视录像机78XXNB-k2.NVR-K74-QD-CN-STD-V3.4.110-200108的型号为7816nb-K2,这是海康威视推出的一款高性能网络视频录像机。该型号录像机支持最高16路1080P视频输入,具有强大的视频处理能力,能够提供高质量的...