日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

但这是不可能的,或者无法发现JIT破坏了您的代码。

發布時間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 但这是不可能的,或者无法发现JIT破坏了您的代码。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

時不時地查看一些代碼,并認為它不可能是錯誤的。 一旦您排除了簡單的程序員搞砸代碼/代碼中的敵對行為(確保您閱讀Java Puzzlers或類似內容)或并發問題(閱讀Java Concurrency或繼續學習Heniz博士的出色課程 ),您應該坐下來花幾天時間然后開始考慮JDK是否確實可以幫助您。 在我從事Java程序員的18多年中,我還沒有見過如此狂野的家伙,所以這讓我感到驚訝。

如果在大型Swing應用程序中針對JDK 8運行,則最終可能會看到很多次以下異常。 (除非您在日志記錄代碼中忘記了我在上一個博客中獲得的教訓,在這種情況下,您可能會看到很多ArrayOfOutBoundsException)

Caused by: java.lang.NullPointerException at javax.swing.text.GlyphView.getBreakSpot(GlyphView.java:799) at javax.swing.text.GlyphView.getBreakWeight(GlyphView.java:724) at javax.swing.text.FlowView$LogicalView.getPreferredSpan(FlowView.java:733) at javax.swing.text.FlowView.calculateMinorAxisRequirements(FlowView.java:233) at javax.swing.text.ParagraphView.calculateMinorAxisRequirements(ParagraphView.java:717) at javax.swing.text.BoxView.checkRequests(BoxView.java:935) at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:568) at javax.swing.text.BoxView.calculateMinorAxisRequirements(BoxView.java:903) at javax.swing.text.BoxView.checkRequests(BoxView.java:935) at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:343) at javax.swing.text.BoxView.layout(BoxView.java:708) at javax.swing.text.BoxView.setSize(BoxView.java:397) ...

此錯誤特別隱蔽,因為它需要大約十分鐘才能顯示出來,有時甚至根本不需要。 如果您查看該類的代碼,則所討論的行以“ startsFrom = break”開頭,僅訪問兩個局部變量,這兩個局部變量先前已在該方法中進行了引用。

Segment s = getText(pstart, pend); s.first(); BreakIterator breaker = getBreaker(); breaker.setText(s); // Backward search should start from end+1 unless there's NO end+1 int startFrom = end + (pend > end ? 1 : 0); for (;;) { startFrom = breaker.preceding(s.offset + (startFrom - pstart)) + (pstart - s.offset); if (startFrom > start) { // The break spot is within the view bs[ix++] = startFrom; } else { break; } }

排除JIT錯誤的最直接方法是僅針對單個方法禁用編譯,下面是一個示例。 但是您可以在命令行Java工具的文檔中找到更多信息。

javaThing -XX:CompileCommand=exclude,javax/swing/text/GlyphView,getBreakSpot

添加此參數后,問題就消失了。 –由于我們已通過代碼或并發問題排除了敵方行動,因此我們可以更加確定這是JIT問題。 現在,作為此錯誤記錄的一部分,我輸出了該單一方法的診斷信息,并發現直到第五次方法被JITted時,問題才出現。

javaThing -XX:CompileCommand=print,javax/swing/text/GlyphView,getBreakSpot

這是上面命令顯示的一些診斷輸出:

Compiled method (c2) 914078 33142 4 javax.swing.text.GlyphView::getBreakSpot (247 bytes)total in heap [0x00002aaab0749e10,0x00002aaab0750fe0] = 29136relocation [0x00002aaab0749f38,0x00002aaab074a1e8] = 688constants [0x00002aaab074a200,0x00002aaab074a2a0] = 160main code [0x00002aaab074a2a0,0x00002aaab074cde0] = 11072stub code [0x00002aaab074cde0,0x00002aaab074ce40] = 96oops [0x00002aaab074ce40,0x00002aaab074ce58] = 24metadata [0x00002aaab074ce58,0x00002aaab074d058] = 512scopes data [0x00002aaab074d058,0x00002aaab074ea20] = 6600scopes pcs [0x00002aaab074ea20,0x00002aaab0750c50] = 8752dependencies [0x00002aaab0750c50,0x00002aaab0750c80] = 48handler table [0x00002aaab0750c80,0x00002aaab0750e90] = 528nul chk table [0x00002aaab0750e90,0x00002aaab0750fe0] = 336 OopMapSet contains 113 OopMaps #0 OopMap{[8]=Oop [32]=Oop [40]=Oop off=892} #1 OopMap{[32]=Oop [40]=Oop off=960} #2 OopMap{[32]=Oop [40]=Oop off=980} #3 OopMap{[32]=Oop [40]=Oop [48]=Oop off=1048} #4 OopMap{[32]=Oop [40]=Oop [48]=Oop off=1084} #5 OopMap{[0]=Oop [24]=Oop [48]=Oop [56]=Oop [80]=Oop off=2500} #6 OopMap{rbx=Oop rdi=Oop [32]=Oop [40]=Oop [112]=Oop off=2533} #7 OopMap{rbx=Oop rdi=Oop r14=Oop [32]=Oop [112]=Oop off=3081} #8 OopMap{rbx=Oop rdi=Oop r14=Oop [32]=Oop [40]=Oop [112]=Oop off=3190} #9 OopMap{[8]=Oop [32]=Oop [40]=Oop off=4408} #10 OopMap{[32]=Oop [40]=Oop [48]=Oop off=4640} #11 OopMap{rbp=Oop [16]=Oop [24]=Oop [40]=Oop [64]=Oop off=5232} #12 OopMap{rbp=Oop [0]=NarrowOop [32]=Oop off=5364} #13 OopMap{[32]=Oop [40]=Oop [48]=Oop off=5408} #14 OopMap{rbp=Oop [32]=Oop [40]=Oop [48]=Oop off=5436} #15 OopMap{rbp=Oop [32]=Oop [40]=Oop [48]=Oop off=5468} #16 OopMap{rbp=Oop [32]=Oop [40]=Oop [48]=Oop off=5524} #17 OopMap{rbp=Oop [32]=Oop [40]=Oop [48]=Oop [88]=Oop off=5552} #18 OopMap{[32]=Oop [40]=Oop [48]=Oop [64]=Oop [72]=Derived_oop_[64] [112]=Oop off=5608} #19 OopMap{[8]=Oop [32]=Oop off=5680} #20 OopMap{rbp=Oop off=5720} #21 OopMap{rbp=Oop off=5752} #22 OopMap{rbp=Oop [24]=NarrowOop [28]=NarrowOop [32]=Oop [40]=Oop [48]=Oop [56]=Oop [64]=Oop [88]=Oop off=5812} #23 OopMap{rbp=Oop [16]=Oop [24]=Oop [40]=Oop [64]=Oop [88]=Oop off=5960} #24 OopMap{[0]=Oop [24]=Oop [48]=Oop [56]=Oop [72]=Oop [88]=NarrowOop off=6056} #25 OopMap{[40]=Oop off=6088} #26 OopMap{[0]=Oop off=6120} #27 OopMap{[8]=Oop [24]=Oop [56]=Oop [72]=Oop [112]=Oop off=6216} #28 OopMap{[0]=Oop [32]=NarrowOop [40]=Oop off=6284} #29 OopMap{rbp=Oop [16]=Oop [40]=Oop [64]=Oop [112]=Oop off=6384} #30 OopMap{[0]=Oop off=6412} #31 OopMap{[0]=Oop [16]=Oop [32]=NarrowOop [40]=Oop [48]=Oop off=6488} #32 OopMap{rbp=Oop [16]=Oop [40]=Oop [48]=Oop off=6560} #33 OopMap{[32]=Oop [40]=Oop [48]=Oop [64]=Oop [112]=Oop off=6608} #34 OopMap{[8]=Oop [28]=NarrowOop [32]=Oop [40]=Oop [48]=Oop off=6768} #35 OopMap{rbp=NarrowOop [0]=Oop [16]=Oop [32]=Oop [40]=NarrowOop off=6860} #36 OopMap{[0]=Oop [16]=Oop [32]=NarrowOop [40]=Oop [48]=Oop off=6988} #37 OopMap{rbp=Oop [32]=Oop off=7024} #38 OopMap{rbp=NarrowOop [0]=Oop [24]=Oop [32]=Oop off=7260} #39 OopMap{rbp=NarrowOop [0]=Oop [24]=Oop [32]=Oop off=7344} #40 OopMap{rbp=Oop [16]=Oop [24]=Oop [40]=Oop [60]=NarrowOop [64]=Oop off=7452} #41 OopMap{rbp=NarrowOop [32]=Oop off=7476} #42 OopMap{rbp=NarrowOop [0]=Oop off=7524} #43 OopMap{[32]=Oop [40]=Oop [48]=Oop off=7588} #44 OopMap{[32]=Oop [40]=Oop [48]=Oop off=7616} #45 OopMap{[32]=Oop [40]=Oop [48]=Oop off=7632} #46 OopMap{rbp=NarrowOop [32]=Oop off=7676} #47 OopMap{rbp=NarrowOop [0]=Oop off=7724} #48 OopMap{[0]=Oop [16]=Oop [28]=NarrowOop [40]=Oop [48]=Oop [56]=NarrowOop [64]=Oop off=7868} #49 OopMap{[8]=Oop [28]=NarrowOop [32]=Oop [40]=Oop [48]=Oop [56]=Oop off=7916} #50 OopMap{rbp=Oop [16]=Oop [24]=NarrowOop off=8016} #51 OopMap{rbp=Oop [16]=Oop [28]=NarrowOop off=8080} #52 OopMap{rbp=NarrowOop [0]=Oop [24]=Oop [32]=Oop off=8152} #53 OopMap{rbp=Oop [8]=NarrowOop off=8212} #54 OopMap{rbp=NarrowOop [32]=Oop off=8236} #55 OopMap{rbp=Oop [16]=NarrowOop off=8272} #56 OopMap{rbp=NarrowOop [0]=Oop off=8320} #57 OopMap{rbp=Oop [12]=NarrowOop off=8360} #58 OopMap{rbp=NarrowOop [32]=Oop off=8400} #59 OopMap{rbp=Oop [12]=NarrowOop off=8460} #60 OopMap{rbp=NarrowOop [0]=Oop off=8508} #61 OopMap{rbp=Oop [24]=NarrowOop [40]=Oop off=8572} #62 OopMap{rbp=Oop off=8600} #63 OopMap{rbp=Oop [8]=Oop [28]=NarrowOop off=8640} #64 OopMap{rbp=Oop [8]=Oop [20]=NarrowOop [112]=Oop off=8704} #65 OopMap{rbp=Oop [16]=Oop [24]=Oop [48]=Oop off=8788} #66 OopMap{rbp=Oop [16]=Oop [24]=Oop [40]=Oop [64]=Oop off=8912} #67 OopMap{rbp=Oop [16]=Oop [24]=Oop [40]=Oop [64]=Oop off=9036} #68 OopMap{rbp=Oop [16]=Oop [24]=Oop [40]=Oop [64]=Oop off=9160} #69 OopMap{rbp=Oop [16]=Oop [24]=Oop [40]=Oop [64]=Oop off=9284} #70 OopMap{rbp=Oop [16]=Oop [24]=Oop [40]=Oop [64]=Oop off=9408} #71 OopMap{rbp=Oop [16]=Oop [24]=Oop [40]=Oop [64]=Oop off=9532} #72 OopMap{off=9556} #73 OopMap{off=9580} #74 OopMap{off=9604} #75 OopMap{[112]=Oop off=9628} #76 OopMap{rbp=Oop [8]=Oop [24]=Oop [32]=NarrowOop off=9696} #77 OopMap{rbp=Oop [8]=Oop [24]=NarrowOop off=9760} #78 OopMap{off=9784} #79 OopMap{off=9812} #80 OopMap{off=9836} #81 OopMap{off=9860} #82 OopMap{off=9884} #83 OopMap{off=9908} #84 OopMap{off=9932} #85 OopMap{off=9956} #86 OopMap{off=9980} #87 OopMap{off=10004} #88 OopMap{off=10028} #89 OopMap{rbp=Oop [16]=Oop [28]=NarrowOop off=10092} #90 OopMap{rbp=Oop [16]=Oop [24]=Oop [48]=Oop off=10176} #91 OopMap{off=10200} #92 OopMap{off=10224} #93 OopMap{off=10248} #94 OopMap{off=10272} #95 OopMap{off=10296} #96 OopMap{off=10320} #97 OopMap{off=10344} #98 OopMap{off=10368} #99 OopMap{off=10392} #100 OopMap{off=10416} #101 OopMap{off=10440} #102 OopMap{off=10464} #103 OopMap{off=10488} #104 OopMap{off=10512} #105 OopMap{off=10536} #106 OopMap{off=10560} #107 OopMap{off=10584} #108 OopMap{off=10608} #109 OopMap{off=10632} #110 OopMap{off=10656} #111 OopMap{off=10680} #112 OopMap{off=11028} java.lang.NullPointerExceptionat javax.swing.text.GlyphView.getBreakSpot(GlyphView.java:799)at javax.swing.text.GlyphView.getBreakWeight(GlyphView.java:724)at javax.swing.text.html.InlineView.getBreakWeight(InlineView.java:150)at javax.swing.text.FlowView$LogicalView.getPreferredSpan(FlowView.java:733)at javax.swing.text.FlowView.calculateMinorAxisRequirements(FlowView.java:233)at javax.swing.text.ParagraphView.calculateMinorAxisRequirements(ParagraphView.java:717)at javax.swing.text.html.ParagraphView.calculateMinorAxisRequirements(ParagraphView.java:157)at javax.swing.text.BoxView.checkRequests(BoxView.java:935)at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:568)at javax.swing.text.html.ParagraphView.getMinimumSpan(ParagraphView.java:270)at javax.swing.text.BoxView.calculateMinorAxisRequirements(BoxView.java:903)

現在,我仍在與JDK團隊合作解決此問題。 但是我確實覺得我已經找到了一套有用的工具,可以提供一些證據來證明JIT編譯器正在造成我的糟糕狀況。 更重要的是,我有一種解決方法,因此可以運行測試,直到解決為止。

翻譯自: https://www.javacodegeeks.com/2014/11/but-thats-impossible-or-finding-out-that-the-jit-has-broken-your-code.html

總結

以上是生活随笔為你收集整理的但这是不可能的,或者无法发现JIT破坏了您的代码。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美黄片一区二区三区 | 丁香av| 人妻熟女aⅴ一区二区三区汇编 | 国产免费av一区 | 日韩精品一区二区在线视频 | 日韩人妻无码精品久久久不卡 | 日本黄色视 | 小少妇哺乳喂奶播放 | 每日更新av | 91插插插插 | 视频在线日韩 | 天堂在线观看 | 国产中文一区二区 | 日本三级韩国三级三级a级中文 | 亚洲国产伊人 | 夜夜爽爽| 尤物精品在线 | 亚洲少妇第一页 | 国产日韩在线播放 | 午夜视频精品 | 99热一区| 玖玖五月| 日韩黄色高清视频 | 中文字字幕在线中文乱码 | www.av色 | 色欧洲 | 在线青草 | 日韩三级久久 | 国产天堂在线观看 | 95视频在线观看 | 又污又黄的网站 | 综合久久亚洲 | 黄色大片在线看 | 丰满人妻一区二区三区性色 | 五月婷婷,六月丁香 | 可以免费看av的网址 | 日本妇女毛茸茸 | 国产精品久久77777 | 骑骑上司妻电影 | 国产精品亚洲天堂 | 亚洲精品美女久久久 | 国产成人综合视频 | 欧美一区二区三区大屁股撅起来 | 不卡三区 | 粉色视频免费观看 | 国产黄色av片| 少妇一级淫片免费放中国 | 国产77777| 久色视频在线播放 | 色欲av伊人久久大香线蕉影院 | 人妻精品久久久久中文字幕 | 91成人入口 | 欧美在线www| 成年人香蕉视频 | 欧美成人久久久免费播放 | 久久久久亚洲AV成人 | 亚洲最新av网址 | 少妇乱淫| aaaaa级少妇高潮大片免费看 | 扒开女人屁股进去 | 日韩草逼视频 | 中文字幕av一区二区三区谷原希美 | 久久成人毛片 | 最新免费av | 成人h动漫精品一区 | 亚洲激情第一页 | 精品无码一级毛片免费 | 国产在线播 | 亚洲av无码精品一区二区 | 欧美在线性视频 | 精品福利三区3d卡通动漫 | 国产伦精品一区二区三区视频1 | 日本狠狠干 | 91久久久精品 | 亚洲国产片| 美女让男人捅 | 小毛片在线观看 | 91精品国产亚洲 | 色77777| 无码人妻aⅴ一区二区三区69岛 | 中文字幕永久在线 | 久草中文视频 | 国产精品91一区 | 亚洲制服在线观看 | 亚洲精品国产手机 | 黄色99| 日韩av在线一区二区 | 中国国产精品 | www嫩草| 芒果视频污污 | 伊人网av在线| 国产小视频自拍 | 久久影院国产 | 日韩免费在线观看视频 | 国产免费黄网站 | 538国产精品一区二区免费视频 | 熟女一区二区三区视频 | 性欧美在线观看 | 成人午夜精品福利免费 |