Опция JVMTI звучит так, будто это не будет плохим выбором. Большая проблема заключалась бы в том, чтобы вы обернули все, что может открыть дескриптор файла: вам, в основном, нужно было бы просмотреть исходный код JDK и найти все нативные функции, которые открывали файл (замусорено в java.io. , java. nio. , я думаю, что java.net. * также, если вы рассматриваете сокеты как дескрипторы файлов, и почти везде, где дескриптор файла может быть открыт встроенной функцией), а затем оберните их все с помощью SetNativeMethodPrefix вызов.
Я предполагаю, что это то, что делают некоторые из профилирующих людей: однако, если вы не обязаны делать это перечисление в режиме реального времени, то я думаю, что было бы ПУТЬ проще использовать lsof
или handle
(на платформах Windows) и фильтр для идентификатора процесса вашей JVM.