0
CharBufferを使用してアプリケーションでStringをデコードしています。 しかし、CharBuffer.toStringを使用すると、toStringメソッドが呼び出されるたびにStringオブジェクトが作成されるように見えます。 CharBufferを使用するときに文字列プールを使用する方法はありますか? Follwingは私の方法です、事前に感謝します。java CharBuffer.toStringでオブジェクトが多すぎます
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();
}
プールしたいものは何ですか?同じByteBuffer(または同じ内容のByteBuffers)でこのメソッドを繰り返し呼び出していますか? – Thilo
はい、読み取りメソッドのほとんどの結果は同じです。このメソッドは非常に嫌なので、私はreadメソッドの結果をプールするのが好きです。 –