Java運行原理:
Java有一個垃圾回收機制,總是在內(nèi)存剩余大概5%才啟動,因為它中斷權(quán)限最高,它運行,其他全部停止,因此,我們不希望垃圾回收機制頻繁啟動,那么就要控制內(nèi)存不要觸碰剩余5%底線。
而在普通JavaBeans系統(tǒng)中,每一次客戶端請求訪問時,系統(tǒng)總是new一個javabeans或Java Class,如果并發(fā)訪問量很大,比如并發(fā)10人或100人,再加上你的系統(tǒng)復(fù)雜,有很多JavaBeans,假設(shè)有30個,那么這下子100個并發(fā)請求來,就有3000個Java對象創(chuàng)建,然后下一批有來一次100個請求,這象潮水一樣。
每次請求產(chǎn)生的3000個對象會繼續(xù)占用內(nèi)存,不會被垃圾回收機制回收,因為垃圾回收機制只有等到內(nèi)存剩余5%才啟動,這樣,你的內(nèi)存無論多大,取決于訪問量,總會被耗光,最后垃圾回收出來收拾殘局,你的業(yè)務(wù)系統(tǒng)被暫停甚至緩慢。
所以,這里需要有資源控制,將內(nèi)存能夠控制住,不要被無限消耗,最后導(dǎo)致垃圾回收啟動,造成系統(tǒng)好像死機。
控制資源就是使用Pool或Cache來控制,Spring/JdonFramework下可自行加入; EJB已經(jīng)默認加入了。
這也是我一直反對使用Jsp+JavaBeans來寫復(fù)雜或大訪問量的系統(tǒng),至于如何控制服務(wù)器資源,只有數(shù)據(jù)庫連接池是不夠的,因為Bean才是真正的資源消耗重點。
如果你理論上屬于無知,又狂熱追求Spring這些新玩藝(當初),那么,即使你使用Spring,性能還是和Jsp+JavaBeans一樣,在大訪問量情況下經(jīng)常死機,因為Spring里面需要手工配置Pool或Cache這些資源控制機制。
如果說Java比C方便,因為對象使用之后不需要清理,那么有了Ioc/DI依賴注射以后,Java中對象使用之前也不需要創(chuàng)建了。
spring 的好處,不用創(chuàng)建javabean對象了。