Nie mogę odpowiedzieć na twoje zaksięgowane pytanie, ale czy możesz wyjaśnić, jaki masz problem?
Innymi słowy, można powiedzieć, czy jest ...
- w warstwie JNI a nie problem JVM zakres obiekt?
- Korzystanie z free'd pamięci?
- Buforowanie/nadpisanie bufora?
- Inne uszkodzenie pamięci?
Niedawno musiałem debugować Javę/C, która miała problemy (po 30 minutach od uruchomienia), co okazało się używanie pamięci po tym, jak została zwolniona. Próbowałem używać dmalloc, mojej własnej biblioteki wycieku pamięci, Valgrind i żaden nie działał tak, jak potrzebowałem.
Ostatecznie stworzyłem prosty zestaw obwolut dookoła wolnego, malloc, calloc, realloc, który po prostu wydrukował adresy i rozmiary pamięci do pliku. Po jego przerwaniu (w ramach GDB) mogłem cofnąć się w czasie i dowiedzieć się, kiedy pamięć została zwolniona i gdzie odniesienia nie zostały usunięte.
JEŻELI twój problem jest w C/C++ i możesz uwięzić błąd w debugerze, to może ci pomóc. Tak, to żmudne, ale może nie gorsze niż przeglądanie megabajtów produkcji Valgrinda.
Nadzieję, że pomaga & powodzenia.
Znalazłem śledzenie problemów pamięci JNI na Win32 nie jest łatwiejsze. –
Jeśli utworzysz plik wykluczeń, czy mógłbyś go opublikować tutaj? – Arkadiy