【发布时间】:2012-05-16 19:51:04
【问题描述】:
我有一个 servlet,用户可以将 XML 文件发布到。
我使用以下方法读取该文件:
String xml = request.getParameter("...");
现在说 xml 文档是 10KB,因为我创建了变量 xml 我现在为该变量使用了 10KB 的内存对吗?
现在我需要解析该 xml(使用 xerces),并在将其传递给 saxparsers 解析方法时将其转换为输入流(http://docs.oracle.com/javase/1.5.0/docs /api/javax/xml/parsers/SAXParser.html)。
那么,如果我将字符串转换为流,我的内存使用量会增加一倍吗?
需要对此进行一些澄清。
如果我将我的进程与 visualvm 或 jconsole 连接,在单步执行代码时,我是否可以查看在调试器中单步执行代码时是否使用了额外的内存?
我想确保我这样做不会效率低下,因为这个端点会受到重创。
【问题讨论】:
-
如果你想自己检查发生了什么,你正在寻找一个分析器(YourKit 相当不错,虽然不是免费的)
-
如果它是一个请求参数,你真的没有其他选择。如果将其放在消息正文中,则可以将流直接读入 XML 结构。
-
使用流读取字符串不会使内存加倍——事实上这是个好主意。