Ich schaue mir die Möglichkeit an, Java-Bytecode zur Laufzeit zu generieren (hoffentlich direkt im Speicher und nicht über Klassendateien, obwohl ich mir denke, dass das für mich keinen Unterschied macht) Frage).Java-Speicherbereinigung von Laufzeit generiertem Code
Ich verstehe, dass dies getan werden kann, ist die Frage, ob der Garbage Collector nicht mehr verwendeten Code fegen? Ich erinnere mich, dass ich vor einigen Jahren gesehen habe, dass dies nicht der Fall war, aber ich finde keine Hinweise auf das Thema.
Um den Zweck dieser zu klären, würde ich sicherlich nicht für normale Datenverarbeitungsszenarien stören. Aber bedenken Sie die genetische Programmierung: potenziell Milliarden kleiner Programme, die für Billionen von Hinrichtungen generiert und betrieben werden; In diesem Szenario lohnt es sich, die Dinge so schnell wie möglich laufen zu lassen, und es ist wichtig, nicht mehr verwendeten Code freizugeben. Ich versuche, etwas Komplexeres zu tun, aber es hat Ähnlichkeiten mit genetischer Programmierung.
Angesichts Ihres Beispiels (große Anzahl kleiner Klassen) würde ich vorschlagen, eine Lösung zu suchen, die keine Java-Klassen beinhaltet. Der Aufwand beim Erstellen von Klassenladern für jede dieser Klassen wird extrem sein. Schauen Sie sich stattdessen eine Art selbstgewählten Dolmetscher an. – kdgregory
Aber können Sie nicht einen einzelnen Klassenlader erstellen und ihn für eine große Anzahl von Klassen verwenden und dann alle auf einmal freigeben, wenn Sie alle Verweise auf den Loader löschen? – rwallace
Ja - vorausgesetzt, dass Sie nicht einige behalten und andere verwerfen möchten (wie ein genetischer Algorithmus es tun würde). – kdgregory