我們有一個應用程序,其中從存儲的proc結果集創建XML字符串,並使用XSLT進行轉換以返回到調用的servlet。這項工作適用於較小的數據集,但會導致大量數據出現內存不足錯誤。在這種情況下,理想的解決方案是什麼?從結果集輸出較大的xml
3
A
回答
1
3
XSLT轉換通常需要將整個數據集加載到內存中,因此最簡單的方法是獲取更多內存。
如果您可以重寫您的XSLT,那麼XML的流轉換允許增量處理數據。
1
幾件重要的事情要注意。
您提到的功能在功能上與小型數據集功能相當,但會因內存較大而丟失數據。您需要確定是否創建導致內存不足或在同一進程中傳輸數據集的數據集。
你正在做的事情是讓很多對象留在記憶中。重新檢查你的代碼並在使用後明確地廢除一些對象。這將使垃圾收集器的生活更輕鬆。使用JVM的MaxPermSize設置。這將爲您提供額外的字符串空間。
這種方法將會有一個限制,即使您能夠爲單個用戶傳輸大型數據集,也可能會爲多個用戶使用OMeMemory。
一個可能適合你的建議。
在Asyncronous過程中解決這個問題。創建大型數據集,分離進程和下載數據集的過程不同。
使數據集可供下載時,您可以很好地控制使用基於流的下載的內存消耗。
相關問題
- 1. Mule Esb 3.2.1:收集分離器的結果並將結果輸出爲XML
- 2. 輸出結果:值的XML屬性
- 3. sql結果集輸出JSP頁面
- 4. 將大型學說2的查詢結果輸出到輸出
- 5. NHibernate - 流大的結果集?
- 6. 比較結果,shell中測試的輸入和輸出
- 7. PHP - 從XML結果集中消除結果
- 8. 從mysql中讀取大塊結果集
- 9. 限制較大的XML提要結果和說明長度
- 10. 從PowerShell擴展TF.exe結果的輸出
- 11. 怪異的結果從輸出nvprof
- 12. 如何從結果集輸出中隱藏列標題?
- 13. 具有較小日期範圍(結果集)的PostgreSQL查詢比日期範圍較大(結果)的查詢慢
- 14. 「大於」比較文本輸入值的意外結果
- 15. 結果集大小支持
- 16. 將結果集的結果與變量進行比較
- 17. 奇怪的輸出結果
- 18. 從2個mySQLtables輸出結果
- 19. 從jquery ajax調用輸出結果
- 20. 多重比較操作輸出錯誤結果的PowerShell
- 21. 比較Excel中的兩列和輸出匹配結果
- 22. 從結果集中的ActiveRecord
- 23. ResNet50從keras給出了不同的預測結果和輸出結果
- 24. 結果集比較實用程序
- 25. 在java中比較結果集
- 26. Typeahead.js顯示出較低的結果
- 27. 來自谷歌搜索結果的C#xml輸出
- 28. XML輸出需要一個可點擊的結果
- 29. 輸出XML如何使用谷歌地圖API的結果
- 30. 從LINQ結果創建XML
多大? 10Mb或10Gb?它的確有所作爲。你提到servlets:所以它是Java。你確定你已經爲Java VM分配了足夠的內存嗎?默認值非常小。 – 2011-03-07 08:48:36