首頁 >Java >Java基礎 >棧溢流的原因及解決方法是什麼

棧溢流的原因及解決方法是什麼

青灯夜游
青灯夜游原創
2021-06-25 14:33:1916516瀏覽

原因:建立的物件的總容量超過了堆的最大容量。解決方法:如果是記憶體洩漏,則根據導致溢出物件的引用鏈找到特定洩漏位置,進行修改;如果是記憶體溢出,則檢查JVM的堆參數設置,檢查是否有些物件的生命週期過長,或儲存上設計不合理等問題,進行修改。

棧溢流的原因及解決方法是什麼

本教學操作環境:windows7系統、java8版、DELL G3電腦。

Java堆溢位

原因:建立的物件的總容量超過了堆的最大容量。

溢位類型:java.lang.OutOfMemoryError。

解決方法:

  • 排查是因為記憶體溢出還是記憶體洩漏導致的:透過效能監測工具如jconsole,取得堆記憶體快照,查看導致溢出的對像是不是必要的,不是的話就是洩漏,是的話就是溢出。

  • 記憶體洩漏:查看導致溢出的物件的GC ROOTS引用鏈,根據引用鏈找到特定的記憶體洩漏的位置,進行修改。

  • 記憶體溢位:檢查JVM的堆參數設定(-Xmx:JVM最大記憶體與-Xms:啟動初始記憶體),看是否還有向上調整的空間;再從程式碼上檢查是否有些物件的生命週期太長,或儲存上設計不合理等問題。

相關影片教學推薦:Java影片教學

以上是棧溢流的原因及解決方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn