evict什么意思中文 java中while(true)死循環(huán)會(huì)造成JVM內(nèi)存溢出嗎?
java中while(true)死循環(huán)會(huì)造成JVM內(nèi)存溢出嗎?1、把局部變量定義在死循環(huán)里面會(huì)造成棧溢出,諸如下面的定義:while(true){int x=1;int arr[]= new
java中while(true)死循環(huán)會(huì)造成JVM內(nèi)存溢出嗎?
1、把局部變量定義在死循環(huán)里面會(huì)造成棧溢出,諸如下面的定義:
while(true){
int x=1;
int arr[]= new int[10];
}
因?yàn)闂?臻g存儲(chǔ)局部變量、參數(shù)等對(duì)象,棧是有默認(rèn)深度的,我記得是128M(記憶問(wèn)題,錯(cuò)了請(qǐng)指出)。
2、把對(duì)象定義在起循環(huán)里面會(huì)產(chǎn)生堆內(nèi)存溢出,諸如下列定義:
while(true){
Person p = new Person()
}
對(duì)象的生成是占時(shí)間和空間的,因?yàn)槟愕膬?nèi)存空間有限,早晚會(huì)產(chǎn)生堆空間內(nèi)存溢出。
所以大家寫(xiě)代碼要養(yǎng)成良好習(xí)慣,不在特殊情況下,不要把局部變量和對(duì)象定義在循環(huán)里面。