Diversité structurelle et JIT
Limiter la valeur des raccourcis réutilisables en respectant le budget d’exécution de votre application.
La différence d’octets ne suffit pas#
Une graine peut changer constantes et noms tout en préservant le raccourci structurel de l’analyste. Le portefeuille compare les candidats selon leurs empreintes structurelles, familles algébriques et frontières. Une variation de paramètres n’équivaut donc pas à un changement du problème de reconstruction.
Tenir compte de la simplification#
Une expression complexe dans le bytecode peut se simplifier après optimisation. Le moteur modélise certains comportements de canonicalisation HotSpot C2 et recherche les effondrements structurels. La minimisation observationnelle retire aussi les perturbations sans effet sur les bits de sortie demandés. Une complexité sans rôle observable justifie mal un choix.
Ces signaux reposent sur un modèle, sans mesurer chaque JVM ni prouver une résistance à tout optimiseur. Les mesures finales restent propres à l’application et à sa JVM.
Séparer budgets physiques et d’exécution#
La taille du class-file et le coût d’exécution imposent des contraintes différentes. La sélection peut considérer octets, pool de constantes, budgets d’inlining et de nœuds JIT modélisés, état scalaire vivant et allocations. Les régions distinguent noyaux de boucle chauds, logique métier intermédiaire et chemins froids à forte valeur.
Examiner le contenu réel de la publication#
Un chemin renforcé perd de sa valeur si un équivalent plus simple demeure à côté. La revue couvre donc les branches alternatives et les fuites de métadonnées, au-delà du corps transformé. Le projet comprend des contrôles ciblés d’inventaire et d’assainissement des archives. Les diagnostics et aides à la reconstruction restent hors de l’artefact distribué.