gpt4 book ai didi

自动增长并可重复使用的 Java Char Buffer

转载 作者:行者123 更新时间:2023-12-01 18:44:35 25 4
gpt4 key购买 nike

Java 开发人员您好:

我正在寻找一个内置类来存储字符序列。它需要满足以下条件:

  1. 它可以存储字符值(不仅仅是字节值)
  2. 它有一个追加方法,如果底层数据结构超过预先分配的大小,该方法会自动增加大小。
  3. 有一种清除内容的方法(即重新使用内存)。
  4. 可以读取给定索引处的条目。

我发现了几个选项可以满足其中一些要求,但不是全部。例如:

  1. CharBuffer 不满足 2。
  2. StringBuffer 不满足 3。
  3. ByteArrayOutputStream 不满足 1。
  4. CharArrayWriter 不满足 4。

我是否误解了这些类之一的文档,或者有人知道满足所有 4 个标准的数据结构吗?

编辑:根据标准 3,我并不是指 GC 的空闲内存。

我处于需要重复分配和取消分配其中几个缓冲区的情况。在我的用例中,这些缓冲区最终相当大(~ 100 KB),并且我将有多个线程使用此类缓冲区。

我知道我可以创建一个缓冲区,使用它,然后在完成后对其进行 GC 处理。但是,我发现当您不断分配和取消分配大部分 JVM(和物理机)内存时,JVM 垃圾收集器运行得相当慢。当我开始对内存进行微观管理(就像在 C++ 中所做的那样)时,我发现通过分配一次缓冲区然后重新使用它(从而减少触发垃圾收集的频率)来提高速度。

最佳答案

StringBuilder/StringBuffer 应该满足 3 就好,因为 delete(...) 应该满足您的需要。或者为什么不简单地创建一个新实例并让旧实例被 GC 处理呢?

关于自动增长并可重复使用的 Java Char Buffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18345977/

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