除了java.sql.ResultSet以外還有另一個物件組也很容易造成VM把記憶體佔用而不釋放出來,
Collection,包含List、ArrayList、Map、Stack、Vector…等等等,在使用這些物件時,
一般狀況下不使用時,VM應該會自動回收,不過經過實驗,當Collection內含複雜內容,
像Map裡包含ArrayList,而ArrayList又包含Stack….等等,當不在使用Map時,其內容並不會被釋放,
所以需要在不使用Collection把內容給clear掉,可以呼叫clear()事件,Collection所佔用的記憶體其實並沒有很大,
所以如果小程式並不會有感覺,可是一放到流量大的Web Server,如tomcat時,很容易就被塞爆記憶體,
形成out of memory,有out of memory時,加上-Xmx數字m,並無法解決問題時,可以檢查看看Collection的使用。
ps.StringBuffer也會有此種狀況產生,故在使用完StringBuffer後記得要利用setLength(1);讓記憶體放出。
Recommend to Front page

Comment Permissions: Allow commenting