一行程式碼引發的”血案“!!!(軟體開發、專案管理、skycto JEEditor)
轉自:碼農翻身(微訊號:coderising)
今天想起來一件好玩的事, 給大家分享下。
事情發生在幾年前, 那時候大家忙活完一個新需求, 終於上線了, 都想鬆一口氣。
可是很快就發生了一件令人抓狂的事情, 剛上線的系統總是莫名其妙的崩潰, 每次都得重啟才能解決。
更要命的是完全摸不到規律, 系統執行著執行著就down了, 毫不留情面。
趕緊組織人員檢查, 開發人員拍著胸脯, 信心滿滿: 肯定不是我們的問題! 先查查是不是環境的問題!
記憶體使用, 正常 。
硬碟空間,正常。
檢查日誌, 正常, 更找不到什麼OutofMemory。
難道是駭客入侵,工程師仔細檢查系統日誌,也沒有什麼蛛絲馬跡。 我們的系統也不涉及到錢, 根本不值得入侵。
可是系統總是那麼靜悄悄的,冷酷的down機, 快把大家都逼瘋了。
如果是你該怎麼辦?
懷疑了一圈別人的問題以後,最好也懷疑一下自己。
我們就開始嚴格的審查這個新需求新加的,和改動的程式碼,10幾雙眼睛不知道看了多少遍, 還是一無所獲。
後來不知道是誰,偶然看到了程式中有這麼一行可怕的程式碼: System.exit(1) , 然後趕緊檢查它和這個改動的關係。
果然, 在改動之前,這行程式碼永遠都不會被執行到, 相當於死程式碼,它就像個陷阱躺著那裡, 一動不動至少有5年了!
現在終於等來了被觸發的一刻:雖然我們的這次改動離這個 陷阱極其遙遠, 但的確會導致程式會在某種情況下進入這一分支, 於是System.exit(1); 被執行, 陷阱觸發。 JVM悄無聲息的退出了 !
重啟系統, 還會進入這一分支,System.exit, 系統再次退出 ?
就這麼週而復始, 把我們這幫碼農戲耍了好幾天 ?
所以各位同學,以後不要輕易使用System.exit了, 建議你也馬上搜尋一下你的專案, 看看有沒有System.exit這個 陷阱吧。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69947338/viewspace-2656366/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小白科普:敏捷軟體開發(skycto JEEditor)敏捷
- jvm的記憶體引數配置(skycto JEEditor)JVM記憶體
- 敏捷開發專案管理軟體敏捷專案管理
- JDBC亂碼引發的"血案"JDBC
- 分析如何使用專案管理軟體管理軟體開發團隊專案管理
- 軟體開發公司的專案管理怎麼做專案管理
- 2022國產敏捷開發專案管理軟體敏捷專案管理
- git merge使用不當引發的程式碼丟失血案Git
- 如何避免軟體開發專案中的需求管理陷阱?
- 軟體開發專案管理經驗分享:專案全生命週期管理專案管理
- 敏捷開發詳解(含義、原則、目標、機制、skycto JEEditor)敏捷
- 一行程式碼引發的恐懼行程
- 研發效能度量引發的血案
- 產品發版管理用的專案管理軟體專案管理
- final關鍵字的作用(skycto JEEditor)
- hashCode()和equals()的區別?(skycto JEEditor)
- final、finally、finalize()的區別(skycto JEEditor)
- 由Ghost漏洞引發的“血案”
- RestTemplate超時引發的血案REST
- 專訪思泉軟體:專注低程式碼開發平臺開發,助力企業一體化、智慧化管理
- 控制檔案不一致引發的“血案”
- Map集合(Java基礎、skycto JEEditor)Java
- 一個 List.of 引發的“血案”
- Flutter 中由 BuildContext 引發的血案FlutterUIContext
- vue watch陣列引發的血案Vue陣列
- async,await與forEach引發的血案AI
- 低程式碼開發對軟體開發流程的影響
- 一行超長日誌引發的 “血案” - Containerd 頻繁 OOM 背後的真相AIOOM
- 分析IT軟體研發公司用什麼專案管理軟體好?專案管理
- 企業遊戲開發適合用什麼專案管理軟體?遊戲開發專案管理
- 禪道專案管理軟體,敏捷開發團隊不可或缺的工具專案管理敏捷
- Python開發爬蟲專案+程式碼Python爬蟲
- 軟體開發:app軟體開發,pc端軟體開發,微商城/小程式開發APP
- finally語句塊的有限範圍(skycto JEEditor)
- io.Reader遊標引發的血案
- Maven依賴版本號引發的血案Maven
- 一個map函式引發的血案函式
- 一個UPDATE語句引發的血案