В соответствии с this и this, похоже, что dll выгружается только тогда, когда ссылка на объект ClassLoader отсутствует и запущен сборщик мусора. Если это так, можете ли вы просто загрузить DLL в поток, а затем убить поток, чтобы добиться такого же эффекта, не создавая собственный ClassLoader? Что-то вроде этого:Выгрузка dll в Java
new Thread(
new Runnable()
{
public void run()
{
System.load("dll");
}
}
).start(); //Will load the dll, then there will be no references to the thread
System.gc(); //Will unload the dll
я бы, вероятно, сделать что-то более сложное, чем это в реальной обстановке жизни, но только, чтобы показать точку.
Примечание: `System.gc();` не будет напрямую заставлять коллекцию garbare, это больше похоже на «пожалуйста, запустите сборку мусора в ближайшем будущем, если вы в настроении» – thejh 2010-11-29 19:20:49
«О могучий В.М. Я смиренно с большим уважением обращайтесь к вам, возможно, по возможности, в любое удобное для вас время, без давления, подумайте в своей бесконечной мудрости, чтобы запустить мусор, пожалуйста, с сахаром сверху ». – 2010-11-29 20:09:54