Selon this et this, il semble qu'une DLL n'est déchargée que lorsque la référence à l'objet ClassLoader a disparu et le garbage collector s'exécute. Si c'est le cas, pouvez-vous simplement charger la DLL dans un thread, puis tuer le thread pour obtenir le même effet sans avoir à créer un ClassLoader personnalisé? Quelque chose comme ceci:Déchargement dll en 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
je probablement faire quelque chose de plus complexe que cela dans un vrai milieu de vie, mais juste pour montrer le point.
Note: 'System.gc();' ne forcera pas directement une collection garbare, c'est plus comme "s'il vous plaît exécuter une collection de garbage dans un avenir proche si vous êtes d'humeur" – thejh
"Oh mighty VM. Soumettez-vous, avec le plus grand respect, que vous puissiez peut-être, si possible, à n'importe quel moment vous convenant, pas de pression, considérez, dans votre infinie sagesse, de ramasser des ordures, s'il vous plaît, avec du sucre dessus. –