[英]Troubleshooting a Java program that causes a server to hang with “too many files open”
我有一個 Java 程序運行(在 linux 上)一段時間,然后導致服務器鎖定為“打開的文件太多”
重新啟動機器后,我再次運行 java 程序,然后針對它的 pid 執行 lsof 命令。 大量生產以下output的線:
java 971 uknown 980u sock 0,9 0t0 20461 protocol: TCPv6
這是否意味着程序正在打開多個 tcp 連接而不是關閉它們?
我可以采取哪些進一步的步驟來解決此問題?
這意味着您的程序正在打開文件描述符但沒有關閉它們。 它可能是 sockets 或文件處理程序。 所以它導致資源泄漏。 確保所有文件處理程序都已關閉並准備好進行垃圾收集。
正如 dan1st 在評論中指出的那樣,避免這種情況的一種預防措施是使用 try-with-resources。 這將實現 AutoClosable 接口並確保自動關閉資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.