Tôi nghĩ câu hỏi này sẽ được yêu cầu trước đó, nhưng tôi không thể tìm thấy nó ở đây ...Force Java để gọi C++ của tôi destructor (JNI)
Tôi đã sử dụng SWIG để tạo ra một wrapper JNI xung quanh một Lớp C++. Tất cả các công trình tuyệt vời ngoại trừ Java không bao giờ có vẻ gọi finalize của lớp(), do đó, lần lượt, destructor của lớp của tôi không bao giờ được gọi. Destructor của lớp làm một số tập tin cuối cùng I/O, vì vậy không may, đây không chỉ là một rò rỉ bộ nhớ nhỏ.
Tìm kiếm thông qua Google, có vẻ như không phải là cách để buộc Java vào GC và phá hủy một đối tượng. Thật?
Tôi biết tôi có thể thao tác tệp SWIG của mình và tạo một hàm java có thể gọi hàm hủy C++, nhưng lớp này được người dùng cuối sử dụng trong nhiều nền tảng/ngôn ngữ khác nhau, vì vậy việc bổ sung Java chỉ sẽ tạo sự mâu thuẫn mà các nhà văn công nghệ của chúng ta sẽ không thích.