【发布时间】:2011-12-31 12:53:28
【问题描述】:
我正在使用 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 数量那么多。
【问题讨论】:
-
很难说没有看到更多信息,比如一些代码。
-
套接字每个使用两个文件描述符,我假设这些匿名 inode 是文件描述符,因为它们不在文件系统上。
标签: java linux-kernel nio inode netty