
IO
xlj3
静以修身,俭以养德
展开
-
Netty4简单认知
Channel简介在Netty中,Channel相当于一个Socket的抽象,它为用户提供了关于Socket状态(是连接还是断开)及对Socket的读、写等操作。每当Netty建立了一个连接,都创建一个与其对应的Channel实例。下图表示常用Channel:NioSocketChannel的创建 Bootstrap是Netty提供的一个便利的工厂类,可以通过它来完成客户端或服务端的Netty初始化。先来看一个例子,从客户端和服务端分别分析Netty的程序是如何启动的。首先,从客..原创 2020-06-15 16:08:54 · 218 阅读 · 0 评论 -
关于DirectByteBuffer直接堆外内存释放的理解
基本概念:JVM可以使用的内存分外2种:堆内存和堆外内存,堆内存完全由JVM负责分配和释放,如果程序没有缺陷代码导致内存泄露,那么就不会遇到java.lang.OutOfMemoryError这个错误。使用堆外内存,就是为了能直接分配和释放内存,提高效率。我的理解:Unsafe.allocateMemory分配堆外内存,Unsafe.freeMemory释放堆外内存,分配内存通过ByteBuffer.allocateDirect创建DirectByteBuffer对象并分配内存,同时记录相关分原创 2020-06-11 18:56:02 · 1263 阅读 · 0 评论 -
回顾-ByteBuffer简单用法
Buffer flip()方法原创 2020-06-11 15:29:56 · 466 阅读 · 0 评论 -
对于同步和非同步,阻塞和非阻塞,BIO,NIO的概念的回顾
同步和异步同步和异步其实是指CPU时间片的利用,主要看请求发起方对消息结果的获取是主动发起的,还是被动通知的,如下图所示。如果是请求方主动发起的,一直在等待应答结果(同步阻塞),或者可以先去处理其他事情,但要不断轮询查看发起的请求是否有应答结果(同步非阻塞),因为不管如何都要发起方主动获取消息结果,所以形式上还是同步操作。如果是由服务方通知的,也就是请求方发出请求后,要么一直等待通知(异步阻塞),要么先去干自己的事(异步非阻塞)。当事情处理完成后,服务方会主动通知请求方,它的请求已经完成,这就是异步。异原创 2020-06-11 15:16:52 · 438 阅读 · 0 评论