栈溢出的原因及解决办法是什么(的三种情况及解决办法)
生活随笔
收集整理的這篇文章主要介紹了
栈溢出的原因及解决办法是什么(的三种情况及解决办法)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本教程操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。
Java堆溢出
原因:創(chuàng)建的對象的總?cè)萘砍^了堆的最大容量。
溢出類型:java.lang.OutOfMemoryError。
解決方法:
-
排查是因為內(nèi)存溢出還是內(nèi)存泄漏導(dǎo)致的:通過性能監(jiān)測工具如jconsole,獲取堆內(nèi)存快照,查看導(dǎo)致溢出的對象是不是必要的,不是的話就是泄漏,是的話就是溢出。
-
內(nèi)存泄漏:查看導(dǎo)致溢出的對象的GC ROOTS引用鏈,根據(jù)引用鏈找到具體的內(nèi)存泄漏的位置,進行修改。
-
內(nèi)存溢出:檢查JVM的堆參數(shù)設(shè)置(-Xmx:JVM最大內(nèi)存與-Xms:啟動初始內(nèi)存),看是否還有向上調(diào)整的空間;再從代碼上檢查是否有些對象的生命周期過長,或者存儲上設(shè)計不合理等問題。
相關(guān)視頻教程推薦:Java視頻教程
以上就是棧溢出的原因及解決辦法是什么的詳細內(nèi)容,更多請關(guān)注風(fēng)君子博客其它相關(guān)文章!
總結(jié)
以上是生活随笔為你收集整理的栈溢出的原因及解决办法是什么(的三种情况及解决办法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ws831是千兆路由吗
- 下一篇: x和xs黑边一样大吗(English)