我正在写一些使用 ByteBuffer
的东西。在 docs of the API 它说
但是在 SO post's accepted answer 中我读到
现在我该怎么办,我应该释放创建的缓冲区吗?还是我误解了文档或答案中的某些内容?
最佳答案
这取决于您如何创建缓冲区,有许多可能的用例。常规 ByteBuffer.allocate()
将在堆上创建并由 GC 收集。其他选项,例如 native 内存可能不会。
Terracotta BigMemory 是一种不受 JVM GC 控制的原生堆外内存。如果在这种类型的内存中分配缓冲区,则必须自己清除它。
即使缓冲区已分配在堆内存中,清除缓冲区也可能是一个好主意。 GC 将负责收集未使用的缓冲区,但这需要一些时间。
关于java - 我们是否必须手动释放分配的 ByteBuffer?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55417923/