【发布时间】:2011-03-06 23:06:09
【问题描述】:
我正在我的 Android 应用中实现一个 java SAX 解析器。
我一切正常,但我正在尝试优化一个小块,它会占用更多所需的内存。
这是我当前(我知道效率很低)的 DefaultHandler 的 character() 函数的实现。
String currentText = "";
@Override
public void characters(char[] ch, int start, int length)
{
if(currentText.length() > 0)
{
currentText = currentText.concat(new String(ch, start, length));
}else
{
//Takes half as much memory as concating to empty string
currentText = new String(ch, start, length);
}
}
基本上,当 SAX 遇到元素内的文本时,会调用此函数。重要的是要注意,虽然不能保证一次解析整个文本,所以必须将新字符附加到 currentText 中当前的任何文本(注意 currentText 在每个元素的末尾设置为“”)。
我只是把这段代码放在一起让它工作,这样我就可以测试我的解析器的其余部分,但这需要优化。
关于如何实现这一点以使用尽可能少的内存有什么建议吗?
【问题讨论】:
标签: java android optimization string sax