美国成人影院-美国黑人毛片-美国黄色a级片-美国毛片亚洲社区在线观看-成人欧美视频在线观看-成人欧美在线观看

深圳熱線

棧溢出的原因及解決辦法是什么?棧溢出和堆溢出的區(qū)別

2023-04-13 15:27:29 來(lái)源:北流生活

原因:創(chuàng)建的對(duì)象的總?cè)萘砍^(guò)了堆的最大容量。

溢出類型:java.lang.OutOfMemoryError。

解決方法:

排查是因?yàn)閮?nèi)存溢出還是內(nèi)存泄漏導(dǎo)致的:通過(guò)性能監(jiān)測(cè)工具如jconsole,獲取堆內(nèi)存快照,查看導(dǎo)致溢出的對(duì)象是不是必要的,不是的話就是泄漏,是的話就是溢出。

內(nèi)存泄漏:查看導(dǎo)致溢出的對(duì)象的GC ROOTS引用鏈,根據(jù)引用鏈找到具體的內(nèi)存泄漏的位置,進(jìn)行修改。

內(nèi)存溢出:檢查JVM的堆參數(shù)設(shè)置(-Xmx:JVM最大內(nèi)存與-Xms:?jiǎn)?dòng)初始內(nèi)存),看是否還有向上調(diào)整的空間;再?gòu)拇a上檢查是否有些對(duì)象的生命周期過(guò)長(zhǎng),或者存儲(chǔ)上設(shè)計(jì)不合理等問(wèn)題。

棧溢出和堆溢出的區(qū)別

棧溢出是由于C語(yǔ)言系列沒(méi)有內(nèi)置檢查機(jī)制來(lái)確保復(fù)制到緩沖區(qū)的數(shù)據(jù)不得大于緩沖區(qū)的大小,因此當(dāng)這個(gè)數(shù)據(jù)足夠大的時(shí)候,將會(huì)溢出緩沖區(qū)的范圍。

堆溢出的產(chǎn)生是由于過(guò)多的函數(shù)調(diào)用,導(dǎo)致調(diào)用堆棧無(wú)法容納這些調(diào)用的返回地址,一般在遞歸中產(chǎn)生。堆溢出很可能由無(wú)限遞歸(Infinite recursion)產(chǎn)生,但也可能僅僅是過(guò)多的堆棧層級(jí)。

關(guān)鍵詞: 棧溢出的原因及解決辦法是什么 棧溢出是運(yùn)行時(shí)異常嗎 棧溢出是緩沖區(qū)溢出的一種嗎 棧溢出是在編譯還是運(yùn)行時(shí)候

熱門(mén)推薦