lsof
to ładne narzędzie dla systemu Unix, pokazujące wszystkie aktualnie otwarte uchwyty plików.lsof odpowiednik JVM?
Czy ktoś zna podobne narzędzie, które wyświetliłoby wszystkie otwarte pliki wewnątrz uruchomionej maszyny JVM (za pośrednictwem JVMTI lub podobnego interfejsu)?
W tym konkretnym przypadku wystarczyłoby mi wiedzieć, która klasa ma otwarty uchwyt. Metoda/line lub nawet cały łańcuch do GC root byłby fantastyczny, ale klasa właściciela obsługi jest już dobrym początkiem.
Wiem, że mógłbym zrobić zrzut sterty, otworzyć go w profilerze i znaleźć to, ale jest to żmudne zadanie, szczególnie w przypadku dużych hałd.
Proponuję użyć lepszego profilera. ;) W YourKit mogę zobaczyć wszystkie otwarte pliki podczas działania aplikacji. –
Używam YourKit, ale rzadko masz włączone profilowanie na żywo. Czy też obsługa YourKit obsługuje wyświetlanie uchwytów plików ze zrzutów? – mindas
Obsługuje wyświetlanie FileDescriptor ze zrzutu, wyszukując według klasy, która jest używana dla wszystkich otwartych plików. Możesz zobaczyć, gdzie są przechowywane odniesienia do dowolnego pliku. –