那麼,我們有一個運行在JBoss上的web應用程序,當試圖在postgres數據庫的多個表中插入很多行時,就會出現「OutOfMemory」錯誤。 這是此錯誤的完整環境:
* JBoss的4.3.x版GA
*的Java 1.6.0
*休眠3.0
* PostgreSQL的8.3(駕駛員)
關於實際代碼的工作環境:
*關於這一點的重要部分是我們正在解析大量的xml文檔,每個文檔都從一個特定的URL(1 URL = 1 XML)分開下載。我們通過擁有一個將生成的URL分發到隊列的EJB來實現這一點,然後一組MDB使用流連接並生成文檔(請注意,由於XML文檔的大小,我們實際上必須提高堆棧內存,而我們由於不得不將所有文檔都放在一個流中),一旦生成文檔,就會轉到其他MDB池偵聽的另一個隊列。
那些MDB解析文檔,將信息存儲在幾個實體中(至少5個),然後在DB中持久化(請注意事務管理設置爲「BEAN」並且在每個MDB工作期間開始並提交)。處理URLs不是一個選項,因爲要處理的URL的數量,這將需要大約2個月左右...大聲笑
在Java中使用Postgres的內存不足
麻煩是......我們解析和存儲像200個URL左右和開始解決postgreSQL的內存錯誤。 任何想法??
在此先感謝!
另外:它可能是有用的,知道這個錯誤沒有出來之前(我解析了幾千個XML的信息),只生成文件和解析它的一些實體似乎並沒有帶來麻煩。當我們開始將越來越多的文檔解析爲其代理實體時,麻煩就開始了。 (就像一個實體有一個「功能」列表[其他實體從同一個XML解析])
當你說「失控的內存對於PostgreSQL」,你的意思是你的JBoss的情況下拋出一個異常,或者你的意思是PostgreSQL的後臺程序本身運行內存? – 2008-12-17 13:23:49
Java堆棧跟蹤中顯示異常,但我認爲它是在PostgreSQL一側生成的。 – 2008-12-17 13:33:47