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