簡體   English   中英

Java程序中的文件描述符泄漏:打開文件過多

[英]file descriptor leak in java program : too many open files

我有一個程序,文件描述符增加了。 我看到當我執行命令ls -l / proc / 5969 / fd時,其中5969是Java程序的pid,文件描述符的數量不斷增加。 但我無法打開其中一個文件解密器,以查看哪個文件保持打開狀態:這是清單的示例:

lrwx------ 1 root root 64 oct 24 16:08 52295 -> socket:[2577706264]
lrwx------ 1 root root 64 oct 24 16:08 52296 -> socket:[2579543392]
lrwx------ 1 root root 64 oct 24 16:08 52297 -> socket:[2578760962]

請幫助我找到解決此文件描述符泄漏的方法,以了解哪些文件保持打開狀態並增加文件描述符數目。

好吧,從快速的觀察來看,您正在套接字而不是文件上使用文件描述符

在UNIX中,文件和套接字都使用文件描述符,因此在不關閉打開的套接字時會遇到問題。

如此一來,您不會打開文件,而是實際上使端口號被鎖定,以防止其他程序使用。

嘗試

# lsof -p <pid>

將按進程ID列出所有打開的“文件”,並可能顯示套接字綁定到的IP /端口。 如果您的程序是客戶端程序,則您可能會被TCP RST斷開連接,並且無法正確清理文件描述符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM