Je regarde la possibilité de générer du code octet Java au moment de l'exécution (heureusement directement dans la mémoire plutôt que via des fichiers de classe, bien que j'imagine que cela ne fera pas de différence pour mon question). Je comprends que cela peut être fait, la question est, est-ce que le garbage collector balaie le code non-utilisé plus longtemps? Je me souviens il y a quelques années de voir qu'il prétendait que ce n'était pas le cas, mais je ne peux pas trouver de références au sujet.Garbage garbage collection de code généré à l'exécution
Pour clarifier le but de ceci, je ne serais certainement pas déranger pour les scénarios de traitement de données ordinaires. Mais considérons la programmation génétique: potentiellement des milliards de petits programmes générés et exécutés pour des milliards d'exécutions; Dans ce scénario, cela vaut la peine d'essayer de faire fonctionner les choses le plus rapidement possible, et il est important de libérer le code qui n'est plus utilisé. J'essaie de faire quelque chose de plus complexe, mais il y a des similitudes avec la programmation génétique.
Compte tenu de votre exemple (un grand nombre de petites classes), je suggère de regarder une solution qui ne concerne pas les classes Java. La surcharge de création de classloaders pour chacune de ces classes sera extrême. Au lieu de cela, se tourner vers une sorte d'interprète du cru. – kdgregory
Mais ne pouvez-vous pas créer un seul classloader et l'utiliser pour un grand nombre de classes, puis les obtenir toutes en une seule fois lorsque vous supprimez toutes les références au chargeur? – rwallace
Oui - à condition que vous ne vouliez pas en garder et en jeter d'autres (comme le ferait un algorithme génétique). – kdgregory