Java NIO 操作总结
问题:
1、Java NIO 出现大量CLOSE_WAIT或TIME_WAIT的端口无法释放
CLOSE_WAIT:
参考:http://my.oschina.net/geecoodeer/blog/191774、http://blog.csdn.net/ruixj/article/details/1871979
解决:检查代码可发现,一端的socket调用了close,但是另外一端的socket没有调用close,于是在另外一端加上了socket.close()函数,使得CLOSE_WAIT消失,TIME_WAIT出现。
一般来说,到了TIME_WAIT就是比较正常的情况了,下面是TCP状态转换图:
close操作相当于:(操作/A操作后状态/B操作后状态)
A:我不想说了,但是我可以听到你的(close,发送FIN/A:FIN_WAIT_1/B:ESTABLEISHED)
B:点头(接收FIN,发送ACK/A:FIN_WAIT_1/B:CLOSE_WAIT)
A:点头(接收ACK/A:FIN_WAIT_2/B:CLOSE_WAIT)
B:我也不想说了,我在有限时间内还可以听到你的(close,发送FIN/A:FIN_WAIT_2/B:TIME_WAIT)
A:点头(接收FIN,发送ACK/A:TIME_WAIT/B:TIME_WAIT)
B:点头(接收ACK/A:TIME_WAIT/B:CLOSED)
TIME_WAIT:
参考:http://my.oschina.net/geecoodeer/blog/191774、http://www.blogjava.net/cooperzh/archive/2011/12/20/366884.html
解决:socket.setReuseAddress(true);
2、Java NIO 多线程程序长时间运行时出现“打开的文件过多”错误
参考:无
解决:
1)ls /proc/进程号/fd,发现超多被占用的文件描述符
2)检查代码,查看一下哪里没有关闭SocketChannel和Selector(特别是Selector!由于是多线程,子线程打开的资源忘记关闭会遗留并造成悲剧啊:()
Java NIO 操作总结的更多相关文章
- JAVA NIO中selectedKeys返回的键集,对其中的SelectionKey执行操作之后,是否需要在selectedKeys()中对其执行remove 操作
今天一个东西需要用到java nio的东西.在网上查了一下资料,发现有Apache的Mina,Netty等,感觉JDK中带的NIO有点鸡肋啊.之前看过这部分的内容,但好长一段时间没有用,也就忘得七七八 ...
- Java NIO Path接口和Files类配合操作文件
Java NIO Path接口和Files类配合操作文件 @author ixenos Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路 ...
- Java NIO.2 —— 文件或目录拷贝操作
拷贝整个文件树是可以递归每个目录和文件调用 Files.copy()方法.在使用的时候有一下注意事项. 在往目录拷贝文件之前,首先要保证目录已经存在.拷贝源目录(不论是否为空)都会生成目标目录.整个任 ...
- Java NIO.2 —— 文件或目录删除操作
文件删除 删除单个文件的操作很简单,如果要删除一个目录树的话,需要实现FileVisitor 接口然后递归地调用delete() 或deleteIfExists()方法.在看代码之前,需要注意一下问题 ...
- 【JavaNIO的深入研究4】内存映射文件I/O,大文件读写操作,Java nio之MappedByteBuffer,高效文件/内存映射
内存映射文件能让你创建和修改那些因为太大而无法放入内存的文件.有了内存映射文件,你就可以认为文件已经全部读进了内存,然后把它当成一个非常大的数组来访问.这种解决办法能大大简化修改文件的代码.fileC ...
- java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射
java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果文件超大的话,更快的方式是采用MappedByteBuffer. Mapped ...
- Java7 新特性 —— java.nio.file 文件操作
本文部分摘自 On Java 8 自 Java7 开始,Java 终于简化了文件读写的基本操作,新增了 java.nio.file 库,通过与 Java8 新增的 stream 结合可以使得文件操作变 ...
- 源码分析netty服务器创建过程vs java nio服务器创建
1.Java NIO服务端创建 首先,我们通过一个时序图来看下如何创建一个NIO服务端并启动监听,接收多个客户端的连接,进行消息的异步读写. 示例代码(参考文献[2]): import java.io ...
- JAVA NIO学习笔记1 - 架构简介
最近项目中遇到不少NIO相关知识,之前对这块接触得较少,算是我的一个盲区,打算花点时间学习,简单做一点个人学习总结. 简介 NIO(New IO)是JDK1.4以后推出的全新IO API,相比传统IO ...
随机推荐
- django如何检查创建的模型(model)是否有语法错误或者逻辑错误
首先,用下面的命令验证模型的有效性: python manage.py validate validate 命令检查你的模型的语法和逻辑是否正确. 如果一切正常,你会看到 0 errors found ...
- cookie使用
知识拷贝. 理论很简单,而且模式也和大多请求 http://blog.csdn.net/lanmao100/article/details/2328491(源地址).返回状态的SSO差不多.但是有几个 ...
- leetcode:Add Two Numbers
题目描述:You are given two linked lists representing two non-negative numbers. The digits are stored in ...
- Charles是Mac的Fiddler抓包工具
windows下面我们经常使用 Fiddler 抓包工具进行代理等一系列操作.然而,在 Mac 下的 Fiddler 勉强能运行,但是其挫的都不想说它了.今天看到朋友推荐这款 Charles Mac下 ...
- JAVA中封装JSONUtils工具类及使用
在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作.但是我们更习惯将其进一步封装,达到更好的重用. ...
- 在asp.net前台页面中引入命名空间 和连接数据库
例如:<%@ Import Namespace="System.Data" %> 连接数据库 <% string strconn = "Data Sou ...
- Java之网络编程笔记
网络通讯要素: 1.IP地址 IP地址:用于标记一台计算机的身份证. IP地址由网络地址(确定网络)和主机地址(网络中的主机)组成. IP地址分为A类地址.B类地址.C类地址(常用).D类地址.E类地 ...
- (C#基础) byte[] 之初始化, 赋值,转换。
byte[] 之初始化赋值 用for loop 赋值当然是最基本的方法,不过在C#里面还有其他的便捷方法. 1. 创建一个长度为10的byte数组,并且其中每个byte的值为0. byte[] myB ...
- (二)深入梯度下降(Gradient Descent)算法
一直以来都以为自己对一些算法已经理解了,直到最近才发现,梯度下降都理解的不好. 1 问题的引出 对于上篇中讲到的线性回归,先化一个为一个特征θ1,θ0为偏置项,最后列出的误差函数如下图所示: 手动求解 ...
- AIX 第2章 指令记录
root@db:/#mount node mounted mounted over vfs date options ------- ...