【故障解決】關於java.lang.StackOverFlowError錯誤的說明


  在客戶現場對某業務系統的WebLogic服務器實例做性能調優的時候,設置了自定義線程棧參數(-Xss256k),以提高系統可以創建的線程的數量。Sun JDK默認的線程棧大小為1024k,即1MB。

  這個參數在我之間服務的廠家也曾經被廣泛使用,都沒有發現過在進程啟動的時候出現異常。但是,在這個客戶現場,在進程啟動腳本里面的USER_MEM_ARGS里面設置了-Xss256k參數后,重啟服務器的時候,會報下面的錯誤:

  java.lang.StackOverFlowError

  將啟動腳本里面的-Xss256k刪除以后,重啟服務器進程,沒有再出現StackOverFlowError的錯誤,進程也可以成功啟動。

  在網上查詢資料,StackOverFlowError錯誤的原因是由於程序棧空間被耗盡,通常是由於Java程序代碼中存在深度遞歸的函數導致。出現上面的報錯的時候,可以將-Xss256k的設置刪除,以恢復默認的線程棧大小,即1MB,如果還是報錯,可以繼續嘗試將線程棧參數提升到-Xss2048k,直到進程啟動的時候不再報錯為止。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM