您好 Java 开发人员:
我正在寻找一个内置类来存储一系列字符。它需要满足以下条件:
- 它可以存储字符值(不仅仅是字节值)
- 它有一个 append 方法,如果底层数据结构超过预先分配的大小,它会自动增大大小。
- 有清除内容的方法(即重新使用内存)。
- 可以读取给定索引处的条目。
我找到了几个满足其中一些要求但不是全部的选项。例如:
- CharBuffer 不满足 2。
- StringBuffer 不满足 3。
- ByteArrayOutputStream 不满足 1。
- CharArrayWriter 不满足 4。
我是否误解了这些类之一的文档,还是有人知道满足所有 4 个标准的数据结构?
编辑:根据标准 3,我并不是指为 GC 释放内存。
我处于需要重复分配和取消分配其中几个缓冲区的情况。在我的用例中,这些缓冲区最终相当大(~ 100 KB),我将有多个线程使用这些缓冲区。
我知道我可以创建一个缓冲区,使用它,然后在完成后对其进行 GC-ed。但是,我发现当您不断地分配和取消分配大部分 JVM(和物理机)内存时,JVM 垃圾收集器的运行速度非常慢。当我开始对内存进行微观管理时(就像在 C++ 中可以做的那样),我发现速度有所提高,方法是分配一次缓冲区然后重新使用它(从而减少触发垃圾收集的频率)。