Tôi không thể trả lời câu hỏi đã đăng của bạn, nhưng bạn có thể giải thích về vấn đề bạn đang gặp phải không?
Nói cách khác, bạn có thể cho chúng tôi biết nếu nó là ...
- Trong lớp JNI và không phải là một vấn đề phạm vi đối tượng JVM?
- Sử dụng bộ nhớ miễn phí?
- Bộ đệm ghi đè/ghi đè?
- Tham nhũng bộ nhớ khác?
Gần đây, tôi đã phải gỡ lỗi Java/C đã gặp sự cố (sau 30 phút chạy), mà hóa ra là sử dụng bộ nhớ sau khi đã được giải phóng. Tôi đã thử sử dụng dmalloc, một thư viện rò rỉ bộ nhớ tùy chỉnh của tôi, Valgrind và không ai làm việc như tôi cần.
Cuối cùng tôi đã tạo một bộ trình bao bọc đơn giản xung quanh miễn phí, malloc, calloc, realloc chỉ đơn giản là in địa chỉ bộ nhớ và kích thước vào tệp. Sau khi nó bị hủy bỏ (trong GDB) tôi có thể quay ngược thời gian và tìm ra khi nào bộ nhớ được tự do và nơi mà các tài liệu tham khảo không bị xóa.
NẾU vấn đề của bạn nằm trong C/C++ và bạn có thể bẫy lỗi trong trình gỡ lỗi, điều này có thể phù hợp với bạn. Có, nó tẻ nhạt, nhưng có thể không tồi tệ hơn việc chọn lọc qua megabyte đầu ra Valgrind.
Hy vọng rằng sẽ giúp & chúc may mắn.
Tôi tìm thấy theo dõi các vấn đề bộ nhớ JNI trên Win32 không dễ dàng hơn. –
Nếu bạn kết thúc việc tạo tệp loại trừ, bạn có nhớ đăng tệp ở đây không? – Arkadiy