Здравствуйте, уважаемые. <br>Я понимаю, что обращаюсь немного не по тому адресу, но может кто-нибудь уже встречался с проблемой выгрузки dll(dso)библиотек из памяти в ява?<br>Я для загрузки dll использую отдельный класс-поток, который останавливаю следующим образом:<br>
<br>objects[i].unloadNativeLibs();<br>objects[i].interrupt();<br>objects[i] = null;<br>System.gc();<br><br>Где unloadNativeLibs() имеет следующий код:<br clear="all">&nbsp;&nbsp;&nbsp;&nbsp; unloadNativeLibs() throws Throwable {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //System.runFinalization();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ClassLoader classLoader = this.getClass().getClassLoader();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Field field = ClassLoader.class.getDeclaredField(&quot;nativeLibraries&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; field.setAccessible(true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Vector libs = (Vector) field.get(classLoader);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Object o : libs) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Method finalize = o.getClass().getDeclaredMethod(&quot;finalize&quot;, new Class[0]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finalize.setAccessible(true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finalize.invoke(o, new Object[0]);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>Эта схема работает от силы 1-2 раза (как луна повернётся), после ява-машина вылетает, понаписав логов в текущей дирректории (этот способ не безопасный).<br>-- <br><a href="http://mail.google.com">http://mail.google.com</a>