java CharBuffer.toString创建了太多对象

时间:2016-10-26 02:16:33

标签: java

我使用CharBuffer来解码我的应用程序中的String。 但是当我使用CharBuffer.toString时,看起来每当调用toString方法时都会创建String对象。 使用CharBuffer时有没有办法使用字符串池? Follwing是我的方法,提前谢谢。

private CharBuffer charbuf = CharBuffer.allocate(32000);

private String read(ByteBuffer buf, CharsetDecoder decoder)
{
    charbuf.clear();
    while (buf.remaining() > 0)
    {
        CoderResult result = decoder.decode(buf, charbuf, true);
        if (result == CoderResult.OVERFLOW)
        {
           throwInternalError();
        }
        if (result.isError())
        {
            char data = (char)buf.get();
            if (result.isUnmappable())
            {
                charbuf.put('?');
            }
            else if (result.isMalformed())
            {
                charbuf.put(data);
            }
        }
    }
    charbuf.flip();
    return charbuf.toString();
}

1 个答案:

答案 0 :(得分:1)

  

只要调用String方法,就会创建toString()个对象。

当然。这就是它的用途。你总是可以不经常调用它。没有意义,如果它没有改变。

  

使用CharBuffer时,有没有办法使用字符串池。

你可以intern() Strings。但我会不管它。 Strings将在正常的事件过程中被垃圾收集。