myślałem, że to pytanie byłaby poproszony wcześniej, ale nie mogłem go znaleźć tutaj ...Siła Java, aby zadzwonić do mojego C++ destruktora (JNI)
Użyłem SWIG stworzyć opakowanie JNI wokó? Klasa C++. Wszystko działa świetnie, z wyjątkiem tego, że Java nigdy nie wywołuje finalizacji klasy(), więc z kolei destruktor mojej klasy nigdy nie zostanie wywołany. Destrukcja klasy wykonuje końcowe operacje wejścia/wyjścia pliku, więc niestety nie jest to tylko niewielki wyciek pamięci.
Wyszukiwanie przez Google nie wydaje się być sposobem na wymuszenie Javy na GC i zniszczeniem obiektu. Prawdziwe?
Wiem, że mógłbym manipulować moim plikiem SWIG i utworzyć funkcję java, która wywoływałaby destruktor C++, ale ta klasa jest używana przez użytkowników końcowych na kilku różnych platformach/językach, więc dodanie opcji Java-only stworzy niekonsekwencja, której nasi technicy nie polubią.