JVM可以使用的内存分外2种:堆内存和堆外内存,堆内存完全由JVM负责分配和释放,如果程序没有缺陷代码导致内存泄露,那么就不会遇到java.lang.OutOfMemoryError这个错误。使用堆外内存,就是为了能直接分配和释放内存,提高效率。JDK5.0之后,代码中能直接操作本地内存的方式有2种:使用未公开的Unsafe和NIO包下ByteBuffer。C语言的内存分配和释放函数malloc/free,必须要一一对应,否则就会出现内存泄露或者是野指针的非法访问。java中我们需要手动释放获取的堆外内存吗...
分类:
编程语言 时间:
2014-09-16 22:08:51
阅读次数:
380
Netty是一个传输层的框架,主要的功能就是两个:封装了NIO的操作,封装了CodeC接口,从而使得NIO的开发者只需要关注与业务功能本身的ChannelHandler。
不只是Netty,传输层主要解决的问题就是这两个,处理IO,处理CodeC
CodeC主要处理的问题就是字节流的分帧(Frame),一般有以下几种
按结束符,比如http定长使用消息头消息体的方式,在消...
分类:
Web程序 时间:
2014-09-16 17:32:30
阅读次数:
219
1.常用支持非阻塞通信的类
ServerSocketChannel: ServerSocket 的替代类, 支持阻塞通信与非阻塞通信.SocketChannel: Socket 的替代类, 支持阻塞通信与非阻塞通信.Selector: 为ServerSocketChannel 监控接收连接就绪事件, 为 SocketChannel 监控连接就绪, 读就绪和写就绪事件.SelectionKe...
分类:
编程语言 时间:
2014-09-16 12:39:00
阅读次数:
315
Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,read()也是傻傻的等,这会影响我们程序继续做其他事情,那么改进做法就是开设...
分类:
编程语言 时间:
2014-09-15 11:14:28
阅读次数:
312
1、NIO超级陷阱之所以说NIO超级陷阱,就是因为我在本系列开头的那句话,因为使用缺陷导致客户业务系统瘫痪。当然,我对这个问题进行了很深的追踪,包括对MINA源码的深入了解,但其实之所以会出现这个问题,它的根不是MINA的原因,而是JDK底层的问题...
分类:
其他好文 时间:
2014-09-15 08:48:08
阅读次数:
270
原文地址:http://ifeve.com/channels/声明:Java NIO系列教材并非本人原创,只因阅读原文之后有感于文章之精妙,意欲与诸位共享,故而出此下策,忘原作者见谅。另附上原文地址。Java NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通...
分类:
编程语言 时间:
2014-09-14 21:56:57
阅读次数:
253
原文地址:http://ifeve.com/overview/声明:Java NIO系列教材并非本人原创,只因阅读原文之后有感于文章之精妙,意欲与诸位共享,故而出此下策,忘原作者见谅。另附上原文地址。Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Jav...
分类:
编程语言 时间:
2014-09-14 21:53:07
阅读次数:
201
java中所有的通信都是socket我目前知道的java几种通信方式:1.socket+serverSocket通信。2.NIO 服务端与客户端使用的还是Socket。3.servlet :是由tomcat这种web容器解析的, 过程:tomcat的serverSocket接收到客户端的请求后根据....
分类:
编程语言 时间:
2014-09-14 17:56:07
阅读次数:
248
Netty是基于流的消息传递机制。Netty框架中,所有消息的传输都依赖于ByteBuf接口,ByteBuf是Netty NIO框架中的缓冲区。ByteBuf接口可以理解为一般的Byte数组,不过Netty对Byte进行了封装,增加了一些实用的方法。...
分类:
Web程序 时间:
2014-09-13 12:11:05
阅读次数:
421
前面关注的地方都是Netty采用的流水线处理方式的组织方式,ChannelHandler如何管理,通道状态,通道事件等这些上层的架构设计,那么Netty中如何实现诸如套接字绑定,连接,关闭等这些底层的操作呢?不能只顾着套用API写程序,却对细节不求甚解。这里大致追踪下OIO模式下Channel中套接字绑定的实现,(NIO以后分析)其实逻辑都是一样的,只是在线程模型的地方时不同的。
大致过程如下(...
分类:
Web程序 时间:
2014-09-12 17:10:13
阅读次数:
175