Έχω υποβληθεί αυτήν την ερώτηση αρκετές φορές. Πρόσφατα Xyling υπέβαλε την ίδια ερώτηση στο blog του. Έτσι σκέφτηκα ότι μια απλή εξήγηση μπορεί να είναι στη διαταγή.

Για να ξεφορτώσετε μια κατηγορία πρέπει να δημιουργήσετε μια συνήθεια classloader και να φορτώσετε την κατηγορία χρησιμοποιώντας το. Το Tomcat το κάνει και κάνει έτσι JRun. Μπορείτε να κοιτάξετε στον κώδικα Tomcat για ένα παράδειγμα.

Αφότου γίνεστε με την κατηγορία πρέπει να απελευθερώσετε όλες τις αναφορές στην κατηγορία καθώς επίσης και στο φορτωτή κατηγορίας με την επανεκχώρηση των μεταβλητών ή τη ρύθμιση τους που αχρηστεύουν.

Κατόπιν είτε περιμένετε System.gc () να ξεφορτώσετε την κατηγορία ή το καλείτε άμεσα μέσα βρόχο μέχρης ότου δεν μπορούν να ελευθερωθούν άλλες ψηφιολέξεις. εντούτοις καλώντας κανονικά κάνει δύο φορές το τέχνασμα.

Σημείωση: Δεν μπορείτε να ξεφορτώσετε μια ενιαία κατηγορία. Πρέπει να ξεφορτώσετε το classloader μαζί με το. Τόσο προφανώς το σύστημα classloader δεν είναι το κατάλληλο για αυτόν τον στόχο.

Σημείωση 2: Έτσι οι σελίδες JSP ξαναφορτώνονται δυναμικά everytime εσείς αλλάζουν τον κώδικα. Και ναι γίαυτό ο πρώτος χρόνος παίρνει πολύ περισσότερο για να φορτώσει έπειτα τους επόμενους χρόνους.