我正在使用HPPC软件包,但有一个问题。在API中,DoubleOpenHashSet.clear()方法的内容如下:

Removes all elements from this collection.
Does not release internal buffers.


第二行到底意味着什么?这是否意味着清除的元素将不会被垃圾收集? (我需要将它们收集起来)

最佳答案

如果您查看源代码,将会看到以下方法:

https://github.com/carrotsearch/hppc/blob/master/hppc-core/src/main/templates/com/carrotsearch/hppc/KTypeOpenHashSet.java#L486


清除基本类型的缓冲区数组(为默认值)
将对象缓冲区清除为空(以便可以垃圾回收对象)
不会释放或缩小缓冲区本身(因此仍保留并引用数组)。


因此,“不释放内部缓冲区。”讨论最后一个项目符号(如果您有一个大集合,那么它将不会释放缓冲区数组;可能值得丢弃整个对象而不是清除它)。

10-08 00:27