stackoverflow怎么解決


stackoverflow怎么解決

  • 棧溢出的可能原因:
  1. 函數遞歸調用層次過深 ,每調用一次,函數的參數、局部變量等信息就壓一次棧,並且沒有及時出棧。
  2. 局部變量體積太大
  • 分析:每一個 JVM 線程都擁有一個私有的 JVM 線程棧,用於存放當前線程的 JVM 棧幀(包括被調用函數的參數、局部變量和返回地址等)。

  • 如果某個線程的線程棧空間被耗盡,沒有足夠資源分配給新創建的棧幀,就會拋出 java.lang.StackOverflowError 錯誤。

  • 解決方案:
    1.把遞歸調用函數改用while或者for循環來實現 。
    2.通過尾遞歸優化。
    3.改用堆內存,函數里定義很大的局部變量(例如大數組),這種情況可以將局部變量改為靜態變量(實質上也是全局變量)。
    4.增大棧的大小值。


免責聲明!

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



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