code: private final void _destroy(final Method logFactoryRelease) {
  		for (final Iterator it = this.childrenMap.entrySet().iterator(); it
  				.hasNext();) {
  			final Map.Entry entry = (Map.Entry) it.next();
  			final CClassLoader loader = (CClassLoader) entry.getValue();
  			loader._destroy(logFactoryRelease);
  			it.remove();
  		}
  
  		try {
  			// remove ref from commons logging
  			logFactoryRelease.invoke(null, new Object[] { this });
  		} catch (final Exception e) {
  		}
  
  		try {
  			// reset parent to system class loader
  			final Field parent = ClassLoader.class.getDeclaredField("parent");
  			parent.setAccessible(true);
  			parent.set(this, ClassLoader.getSystemClassLoader());
  			parent.setAccessible(false);
  		} catch (final Throwable ignore) {
  		}
  
  		this.classesMap.clear();
  		for (final Iterator it = this.dllMap.entrySet().iterator(); it
  				.hasNext();) {
  			final Object element = it.next();
  			final Map.Entry entry = (Map.Entry) element;
  			if (entry.getValue() instanceof File) {
  				((File) entry.getValue()).delete();
  			}
  		}
  		this.cacheMap.clear();
  		this.dllMap.clear();
  		this.resourcesMap.clear();
  		this.config = null;
  		this.name = null;
  		this.finalizepath = this.path;
  		this.path = null;
  		//classes
  		System.runFinalization();
  		System.gc();
  	}
docs: Destroy instance variables.
  
  @param logFactoryRelease
  method to release commons logging