原因:建立的物件的總容量超過了堆的最大容量。解決方法:如果是記憶體洩漏,則根據導致溢出物件的引用鏈找到特定洩漏位置,進行修改;如果是記憶體溢出,則檢查JVM的堆參數設置,檢查是否有些物件的生命週期過長,或儲存上設計不合理等問題,進行修改。
本教學操作環境:windows7系統、java8版、DELL G3電腦。
Java堆溢位
原因:建立的物件的總容量超過了堆的最大容量。
溢位類型:java.lang.OutOfMemoryError。
解決方法:
排查是因為記憶體溢出還是記憶體洩漏導致的:透過效能監測工具如jconsole,取得堆記憶體快照,查看導致溢出的對像是不是必要的,不是的話就是洩漏,是的話就是溢出。
記憶體洩漏:查看導致溢出的物件的GC ROOTS引用鏈,根據引用鏈找到特定的記憶體洩漏的位置,進行修改。
記憶體溢位:檢查JVM的堆參數設定(-Xmx:JVM最大記憶體與-Xms:啟動初始記憶體),看是否還有向上調整的空間;再從程式碼上檢查是否有些物件的生命週期太長,或儲存上設計不合理等問題。
相關影片教學推薦:Java影片教學
以上是棧溢流的原因及解決方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!