引用计数是一种常用的内存管理机制,是指将资源的被引用次数保存起来,当被引用次数变为零时就将其释放的过程。Netty在4.x版本开始使用引用计数机制进行部分对象的管理,其实现思路并不是特别复杂,它主要涉及跟踪某个对象被引用的次数。在Netty具体代码中需要通过引用计数进行内存管理的对象,会基于ReferenceCounted接口实现,其中引用计数大于0时则代表该对象被引用不会释放,当引用计数减少到0时,该对象就会被释放。通过引用计数机制,Netty可以很好的实现内存管理,引用计数减少到0时要么直接释放内存,要么放回内存池中重复利用。
1、基本示例
下面先通过一个简单示例看下Netty中引用计数机制的使用
```
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
ByteBuf recvBuffer = (ByteBuf) msg;// 申请ByteBuf 需要主动释放
if(recvBuffer.isDirect()){
System.err.println(true);
}
PooledByteBufAllocator allocator = new PooledByteBufAllocator(true);
ByteBuf sendBuffer = allocator.buffer();//申请池化直接内存
System.err.println("sendBuffer的引用计数:"+sendBuffer.refCnt());
sendBuffer.retain();
System.err.println("sendBuffer的引用计数:"+sendBuffer.refCnt());
sendBuffer.release();
相关文章

Redis
启动服务以及停止 启动服务 ./redis-server redis.conf & ./redis-server start 启动redis服务 ./redis-server stop 停止r...

记一次k8s部署问题
问题描述 在k8s master节点按步骤创建成功后,执行从节点的加入操作,发现一直超时无法加入 问题日志 ```bash [root@node02 kubernetes-1.14]# kubeadm...

面试常问:HTTP 1.0 和 HTTP 1.1 有什么区别?
这篇文章会从下面几个维度来对比 HTTP 1.0 和 HTTP 1.1: 响应状态码 缓存处理 连接方式 Host头处理 带宽优化 响应状态码 HTTP/1.0仅定义了16种状态码。HTTP/1.1中...

Java学习-动手动脑2
``` public void println() { newLine(); } /** * Prints a boolean and then terminate the line. This me...

Java学习 (13)Java流程控制篇(04)break & continue & goto
[TOC] break & continue break *break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break...

Discuz论坛 自动加好友留言程序
这次不同,想要在论坛发消息首先是要登录的,所以必须要一个账号,接着是让爬虫登录,这是最重要的一个步骤,登录后获取Cookie存储,在加好友发消息的时候都要用到Cookie。 在开发过程中,遇到了不少难...

docker安装Kafka(windows版)
windows环境安装docker参考安装docker桌面版(Windows) 这一步如果出现报错的话可以直接输入wsl -l -v命令来查看当前Ubuntu的wsl版本 安装Kafka需要先安装 z...

java并发和排序的简单例子(Runnable+TreeSet)
很多时候,并发需要考虑线程安全,但在很多情况下,它与线程安全无关,因为并发最大的作用是并行性,而线程安全只是并发的一个子主题。[En]Many times concurrency needs to c...

期末代码
使用Java的输入输出流将一个文本文件的内容按行读出,每读出一行,就顺序添加行号,并写入到另一个文件中。 ```java import java.io.*; public class E { publ...

SpringCloud微服务实战——搭建企业级开发框架(二十九):集成分布式对象存储服务及记录管理
微服务应用中图片、文件等存储区别于单体应用,单体应用可以放到本地读写磁盘文件,微服务应用必需用到分布式存储,将图片、文件等存储到服务稳定的分布式存储服务器。目前,很多云服务商提供了存储的云服务,比如阿...

高考志愿填报:java 软件 程序员 目前的就业现状
大约在17年前,也就是2000年,学计算机专业的学生可以有大部分都进入本专业,并且就业非常容易。哪怕只会office套件,想找个工作也很简单。那时候学计算机就是最热门的行业。 那时候,搞Java的还是...

Java 15 新特性:隐藏类
什么是隐藏类 隐藏类是不能由其他类直接使用的类。引入隐藏类的主要目的是供框架使用,以便框架可以在运行时生成类,并通过反射间接使用它们。这可能有点抽象,不要紧,让我们用一个例子直观地理解它![En]A ...

docker进阶
Docker Compose Docker DockerFile build run 手动操作,单个容器 微服务,100个微服务,依赖关系 Docker Compose来轻松高效的管理容器,定义运行多...

java 5种IO模型
人的痛苦会把自己折磨到多深呢? You cannot swim for new horizons until you have courage to lose sight of the shore. ...

从零玩转人脸识别之RGB人脸活体检测
从零玩转RGB人脸活体检测 前言 本期教程人脸识别第三方平台为虹软科技,本文章讲解的是人脸识别RGB活体追踪技术,免费的功能很多可以自行搭配,希望在你看完本章课程有所收获。 ArcFace 离线SDK...