我正在使用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
清除基本类型的缓冲区数组(为默认值)
将对象缓冲区清除为空(以便可以垃圾回收对象)
不会释放或缩小缓冲区本身(因此仍保留并引用数组)。
因此,“不释放内部缓冲区。”讨论最后一个项目符号(如果您有一个大集合,那么它将不会释放缓冲区数组;可能值得丢弃整个对象而不是清除它)。