我正在使用Sun的JDK 1.6.0_26版本和NIO(使用Netty),在lsof中看到了数百个文件描述符,它们都是anon_inode
:
$ lsof -np 11225 | fgrep -w anon_inode
java 11225 nobody 57u 0000 0,9 0 1386 anon_inode
java 11225 nobody 61u 0000 0,9 0 1386 anon_inode
java 11225 nobody 65u 0000 0,9 0 1386 anon_inode
java 11225 nobody 69u 0000 0,9 0 1386 anon_inode
java 11225 nobody 73u 0000 0,9 0 1386 anon_inode
java 11225 nobody 77u 0000 0,9 0 1386 anon_inode
java 11225 nobody 81u 0000 0,9 0 1386 anon_inode
java 11225 nobody 86u 0000 0,9 0 1386 anon_inode
java 11225 nobody 89u 0000 0,9 0 1386 anon_inode
java 11225 nobody 93u 0000 0,9 0 1386 anon_inode
java 11225 nobody 97u 0000 0,9 0 1386 anon_inode
[...]
我找不到一个清晰的解释来说明什么是匿名inode,我查看了Linux内核源代码中的fs/anon_inodes.c
,似乎epoll
使用它,但我不确定为什么会有这么多。我确实有多个“epoll循环”和定时器线程,但数量远不及我的anon_inode
数量。