Nach this und this scheint es, dass eine DLL nur entladen wird, wenn der Verweis auf das ClassLoader-Objekt nicht mehr vorhanden ist und der Garbage Collector ausgeführt wird. Wenn dies der Fall ist, können Sie die DLL einfach in einen Thread laden und dann den Thread beenden, um denselben Effekt zu erzielen, ohne einen benutzerdefinierten ClassLoader erstellen zu müssen? Etwas wie folgt aus:Entladen dll in 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
Ich würde wahrscheinlich etwas aufwendiger als dies in einem realen Leben Einstellung tun, sondern nur um den Punkt zu zeigen.
Hinweis: 'System.gc();' wird nicht direkt eine Garbare-Sammlung erzwingen, es ist eher wie "bitte in naher Zukunft eine Garbage Collection ausführen, wenn Sie in der Stimmung sind" – thejh
"Oh mächtige VM. Ich demütig unterbreiten Sie Ihnen, mit äußerster Achtung, dass Sie vielleicht, wenn möglich, zu jeder Zeit zu Ihnen bequem, keinen Druck, in Ihrer unendlichen Weisheit, einen Müll sammeln, bitte bitte, mit Zucker an der Spitze zu betrachten. –