我想處理從配置元表(數百萬行)導入的大量行。作爲輸出它會更多。 如果某些條件有效,我需要生成新行。但這不是問題。問題是如何存儲這些配置單元行。 在這一刻,我使用對象的ArrayList,因爲順序對於我的插入新行的算法非常重要,但是我得到了「GC超出的開銷限制」。處理大量的java對象
-3
A
回答
0
您應該一次檢索一頁結果到新的ArrayList中,處理該結果頁中的行,根據需要編寫新行,然後將下一個結果頁加載到新的ArrayList中。垃圾收集(GC)將清理較舊的ArrayList。
結果的排序應在數據庫查詢中使用「ORDER BY」子句。
如果您插入到同一個表中並且想要避免重新處理正在添加的行,那麼您需要在表上添加一列來區分新行和現有行 - 例如自動遞增的「id」或「date_created」。
0
我想處理從配置單元表導入的大量行...但我得到了「GC超出的開銷限制」。
這裏有幾個選項。正如@DarrenKennedy所提到的,如果有一種方法一次只處理一個頁面,那麼這將是最優的,但是由於自定義排序,聽起來這不是一個選項。
所以,你有兩種可能性:
增加內存的大小,以適合所有行。我懷疑這也不是一種選擇,但我想我會說出來。
在內存中處理批處理,將其寫入磁盤,然後在最後處理批處理文件。見下文。
要你將需要閱讀了一堆你的輸入行,將輕鬆裝入內存,排序和篩選它們,然後寫每個束出自己的本地臨時文件批量處理。如果您正在使用雲系統,那麼臨時存儲對此很有幫助。
一旦處理完所有的配置單元輸入行,將它們排序並將它們寫入一堆臨時文件中,那麼您將需要返回並讀取並處理進行插入排序的排序行。這裏有一些僞代碼:
- 使用
BufferedReader
等打開所有臨時文件。 - 閱讀所有文件的第一行。
- 輸出所有臨時文件的最低行。閱讀該文件的下一行。
- 重複此過程,直到處理完所有臨時文件。
- 關閉並刪除臨時文件。
希望這會有所幫助。
相關問題
- 1. 處理大量對象
- 2. 處理大量的對象在R
- 3. 正確處理大量對象集合
- 4. C#XNA,處理大量對象,
- 5. 如何在管理大量這些對象時處理對象更新/管理?
- 6. 處理大量
- 7. 處理大型對象的WCF服務
- 8. 處理大量的大jpgs
- 9. 線程來處理Java中的大對象列表
- 10. 交互式處理佔用大量內存的列表對象
- 11. 模糊WCF錯誤處理大量的對象圖
- 12. 對象在內存中處理大量的.NET
- 13. 處理python中大量對象的最佳方法
- 14. 處理創建大量子類型對象的最佳方法
- 15. 的Java:對象指針處理
- 16. Java中,處理對象的權限
- 17. 在Java servlet中處理大量數據
- 18. 使用Java EE處理大量數據
- 19. 如何在Java中處理對象的可選變量?
- 20. 大量的對象,分片和Java EE
- 21. 處理對象
- 22. Hadoop:處理大型序列化對象
- 23. 如何用Java和Webdriver處理超大頁面對象?
- 24. java QuickServer對象處理程序
- 25. 通過Java處理c#對象
- 26. 如何動態處理java對象?
- 27. 處理大量變量並將其傳遞給python中的函數\對象
- 28. NUnit-對象處理
- 29. 處理 - mouseOver對象
- 30. 處理XDocument對象
謝謝你的回答@達倫肯尼迪。我不知道如何選擇行,並確保我的比較中不會丟失任何東西。例如,我有一個日期列,以字符串形式存儲,並且我必須查找下一個日期,以便與另外兩列的值相同。希望我已經清楚了...... – user0221
@ user0221也許發佈了關於如何將查詢作爲新的SQL問題編寫的問題。 –