低内存开销XML解析

时间:2013-02-01 09:16:40

标签: testing grails memory-management memory-leaks groovy

简介:

我正在开发一个网络应用程序(Grails),并且有一个XML操作(上传和导入> 20MB文件),它在我的生产环境中导致OutOfMemoryExceptions占用大量内存。

所以我想在内存消耗中比较XMLSlurper / XMLParser / XmlTwig(说实话,我太懒了,不能为我的DOM编写SAX解析器)

我想知道的事情:

我不知道如何在非生产环境中开始一些批量执行(简单的groovy而不是grails环境)。 我想多次测试不同的实现,测量内存消耗(可能是cpu时间)并显示平均值。如何设置我的生产环境的内存设置(-XX:MaxPermSize,...,在Tomcat上),也可以更改它。

有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:0)

这是一个难以提供直接答案的问题。但是我在这里......

使用DOM解析器或Groovy的XMLSlurper之类的URL应该可以解决问题(或者将文件上传到服务器然后使用XMLSlurper)。每当你处理大文件时,你真的想避免在内存中加载整个文件,然后在它上面做工作,看起来你明白为什么会这样。比较每个实现看起来有点矫枉过正,所以选择一个你不相信的东西,不会将所有东西都加载到内存中。

另外,对于tomcat的jvm设置,你应该利用你可以使用的硬件......在合理范围内;)。在需要更多内存以便有效运行的java环境中尤其如此,因此最大化设置(-Xmx2048m -Xms2048m -XX:MaxPermSize = 256m)。