Nous avons passé les derniers mois à régler notre application de production afin que nous n'ayons pas l'expérience des GC complets. Nous ne connaissons que les jeunes GC, le taux de jeunes GC dépendant du taux d'attribution des objets. Notre application doit être aussi proche que possible du «temps réel». Nous essayons maintenant de réduire le nombre de jeunes GC. Comme le dit le vieil axiome, la plupart des données que nous attribuons finissent par être des ordures et jetées au prochain jeune GC. Donc, pas besoin de préallouer pour ce type de données. Cependant, il y a une bonne quantité d'objets (définis par type) qui, nous le savons, le feront du jeune GC au vieux GC.Quels sont les problèmes liés à la préallocation d'objets dans Java?
Serait-il logique de pré-allouer ces objets pendant des périodes plus idéales (c'est-à-dire au démarrage) afin que nous finissions par allouer moins pendant nos temps moins qu'idéaux? J'ai lu la littérature qui mentionne comment la mise en commun des objets n'est pas recommandée avec les dernières JVM car l'allocation est beaucoup moins chère. Quels sont les inconvénients de pré-allouer des objets que je sais va le faire à l'ancien GC?
Je ne sais pas comment on peut vous aider, car la réponse est très, très dépendante de votre code concret et de la plateforme que vous utilisez. Benchmark et vous verrez. –
Ne pas être truqué, mais si vous êtes si inquiet au sujet de la gestion de la mémoire, ne devriez-vous pas coder la chose reprochée en C++? –
ou utiliser une JVM spécialement conçue pour le temps réel –