我们有一个应用程序,其中从存储的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