概述
jvm中除了程序計(jì)數(shù)器,其他的區(qū)域都有可能會(huì)發(fā)生內(nèi)存溢出
內(nèi)存溢出是什么?
當(dāng)程序需要申請(qǐng)內(nèi)存的時(shí)候,由于沒(méi)有足夠的內(nèi)存,此時(shí)就會(huì)拋出OutOfMemoryError,這就是內(nèi)存溢出
內(nèi)存溢出和內(nèi)存泄漏有什么區(qū)別?
內(nèi)存泄漏是由于使用不當(dāng),把一部分內(nèi)存“丟掉了”,導(dǎo)致這部分內(nèi)存不可用。
當(dāng)在堆中創(chuàng)建了對(duì)象,后來(lái)沒(méi)有使用這個(gè)對(duì)象了,又沒(méi)有把整個(gè)對(duì)象的相關(guān)引用設(shè)為null。此時(shí)垃圾收集器會(huì)認(rèn)為這個(gè)對(duì)象是需要的,就不會(huì)清理這部分內(nèi)存。這就會(huì)導(dǎo)致這部分內(nèi)存不可用。
所以內(nèi)存泄漏會(huì)導(dǎo)致可用的內(nèi)存減少,進(jìn)而會(huì)導(dǎo)致內(nèi)存溢出。
用到的jvm參數(shù)
下面為了說(shuō)明溢出的情景,會(huì)執(zhí)行一些實(shí)例代碼,同時(shí)需要給jvm指定參數(shù)