內存中加載的數據量過於龐大,如壹次從數據庫取出過多數據;集合類中有對對象的引用,使用完後未清空,使得JVM不能回收;代碼中存在死循環或循環產生過多重復的對象實體;使用的第三方軟件中的BUG;啟動參數內存值設定的過小;
檢查對數據庫查詢中,是否有壹次獲得全部數據的查詢。壹般來說,如果壹次取十萬條記錄到內存,就可能引起內存溢出。這個問題比較隱蔽,在上線前,數據庫中數據較少,不容易出問題,上線後,數據庫中數據多了,壹次查詢就有可能引起內存溢出。因此對於數據庫查詢盡量采用分頁的方式查詢。
檢查代碼中是否有死循環或遞歸調用。