I have been asked this question several times. Me ha formulado esta pregunta en varias ocasiones. Recently Xyling asked the same question in his blog. Recientemente Xyling la misma pregunta en su blog. So I thought a simple explanation may be in order. Así que pensé una simple explicación puede estar en orden.

To unload a class you have to create a custom classloader and load the class using it. Para descargar una clase usted tiene que crear una carga de clases y la clase de usarlo. Tomcat does it and so does JRun. Tomcat lo hace y lo mismo ocurre con JRun. You can look in Tomcat code for an example. Puede buscar en Tomcat código para un ejemplo.

After you are done with the class you need to release all references to the class as well as to the class loader by reassigning the variables or setting them to null. Después de que hayas terminado con la clase que necesita poner en libertad a todas las referencias a la clase, así como a la clase cargador de reasignación de las variables o el establecimiento a null.

Then either wait for System.gc() to unload the class or you call it directly in a loop till no more bytes can be freed. A continuación, o bien esperar a System.gc () para descargar la clase o llame directamente en un bucle hasta no más bytes puede ser liberado. however normally calling it twice does the trick. Sin embargo, normalmente el doble de llamadas que hace el truco.

Note: You cannot unload a single class. Nota: No se puede descargar una sola clase. You have to unload the classloader along with it. Tienes que descargar el cargador de clases a lo largo de la misma. So obviously System classloader is not the suitable for this task. Así que, obviamente, del sistema de clases no es el adecuado para esta tarea.

Note 2: This is how JSP pages are reloaded dynamically everytime you change the code. Nota 2: Esta es la forma en JSP se recargan las páginas de forma dinámica cada vez que cambies el código. And yes that is why first time takes much longer to load then subsequent times. Y sí que es la razón por la primera vez que toma mucho más tiempo para cargar a continuación, los tiempos posteriores.