java CharBuffer.toString创建了太多对象



我使用CharBuffer来解码字符串在我的应用程序。但是当我使用CharBuffer。当调用toString方法时,看起来就像创建了String对象。当我使用CharBuffer时,是否有任何方法使用字符串池?以下是我的方法,提前感谢。

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();
}

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

当然

。这就是它的作用。你可以少打几次。如果它没有改变就没有意义。

当我使用CharBuffer时,是否有任何方法使用字符串池

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

最新更新