我們有一個應用程序,其中從存儲的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. 比較兩列號和輸出結果
- 4. 從php輸出結果
- 5. PHP:從XML集合中獲取結果
- 6. sql結果集輸出JSP頁面
- 7. 將大型學說2的查詢結果輸出到輸出
- 8. NHibernate - 流大的結果集?
- 9. PHP - 從XML結果集中消除結果
- 10. 比較結果,shell中測試的輸入和輸出
- 11. 從mysql中讀取大塊結果集
- 12. sql最大日期從結果集
- 13. SQL XML - 返回結果集
- 14. 限制較大的XML提要結果和說明長度
- 15. 從SQL查詢結果輸出多級XML
- 16. 怪異的結果從輸出nvprof
- 17. 從PowerShell擴展TF.exe結果的輸出
- 18. 具有較大結果集的API響應
- 19. 如何從結果集輸出中隱藏列標題?
- 20. 要列出的結果集
- 21. 具有較小日期範圍(結果集)的PostgreSQL查詢比日期範圍較大(結果)的查詢慢
- 22. aspnet_regiis.exe輸出結果
- 23. 「大於」比較文本輸入值的意外結果
- 24. Java結果集最大列?
- 25. 結果集大小支持
- 26. Joomla getItems內存溢出,出現大的結果集
- 27. 從LINQ結果集
- 28. 將結果集的結果與變量進行比較
- 29. 的SQL Server +對輸出進行比較的結果
- 30. RODBC在結果集較大時丟失日期時間值
多大? 10Mb或10Gb?它的確有所作爲。你提到servlets:所以它是Java。你確定你已經爲Java VM分配了足夠的內存嗎?默認值非常小。 – 2011-03-07 08:48:36