gpt4 book ai didi

java - Netty 可以通过 ByteBuffers 消除 GC 吗?

转载 作者:行者123 更新时间:2023-12-01 11:57:10 25 4
gpt4 key购买 nike

当我们创建一个 ByteBuffer 然后不断重用它时,Java 不会对其进行 GC。

Netty 为其输入和输出提供了 ByteBuffer。

它是否通过保持内部定位来不断重用这些缓冲区,以便缓冲区永远不需要垃圾回收?

或者实现者必须做一些特殊的事情来确保没有GC?

最佳答案

Netty 4 使用引用计数来管理ByteBuf的生​​命周期。当池化缓冲区被释放时,底层内存区域将返回到池中,因此该内存区域不会被垃圾回收。当释放非池化缓冲区时,底层内存区域将被显式释放,或设置为 null,以便 JVM 稍后清理它。当然建议使用池化缓冲区。

引用计数比垃圾回收有优势:

  • 可以实现缓冲池或分配器。
  • 可以按时释放堆外缓冲区。

我们希望实现缓冲池或按时释放堆外缓冲区而不需要引用计数,但是一旦 JVM 中的对象变得无法访问,就无法立即收到通知。

关于java - Netty 可以通过 ByteBuffers 消除 GC 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28368015/

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