Java アプリケーションで現在開いているファイルの数を確認するにはどうすればよいでしょうか? 質問する

Java アプリケーションで現在開いているファイルの数を確認するにはどうすればよいでしょうか? 質問する

アプリケーションが行う処理の多くがファイルの内容の読み取りであるとします。言うまでもなく、ファイルは開かれて閉じられ、新しいファイルが古いファイルよりも速く読み込まれない限り、何も問題はありません。これは私が陥った困った状況です。

さて、プロセスによって開かれているファイルの数を確実に知る方法はあるでしょうか? ls /proc/my_pid/fd | wc -lJVM 内部から見るのと同じくらい信頼できる方法はありますか?

答えは OS 固有かもしれないと思うので、私は Linux 上で Java を実行していることを付け加えておきます。

ベストアンサー1

Unixでは、1つの方法として、ManagementFactoryを取得するOperatingSystemMxBeanそしてそれがUnixOperatingSystemMXBean、このgetOpenFileDescriptorCount()方法を使うことができます。

コード例:

import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import com.sun.management.UnixOperatingSystemMXBean;

public class OpenFileCount{
    public static void main(String[] args){
        OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean();
        if(os instanceof UnixOperatingSystemMXBean){
            System.out.println("Number of open fd: " + ((UnixOperatingSystemMXBean) os).getOpenFileDescriptorCount());
        }
    }
}

おすすめ記事