gpt4 book ai didi

java CharBuffer.toString 创建了太多对象

转载 作者:行者123 更新时间:2023-12-01 09:19:36 26 4
gpt4 key购买 nike

我在应用程序中使用 CharBuffer 来解码 String。但是当我使用 CharBuffer.toString 时,看起来每当调用 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();
}

最佳答案

It looks like String objects are created whenever toString() method is called.

当然。这就是它的用途。你总是可以减少调用它的次数。如果没有改变就没有意义。

Is there any way to use string pool when I use CharBuffer.

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

关于java CharBuffer.toString 创建了太多对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40252647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com