Nous développons un serveur et nous voulons programmer le contrôle de congestion. Ce que nous voulons faire est de détecter quand le tas libre est en dessous d'un certain seuil et d'arrêter d'accepter de nouvelles données jusqu'à ce que la mémoire libre remonte. Notre première approche a utilisé runtime.freeMemory. Cela a provoqué de faux positifs car le tas libre est passé sous le seuil avant que GC ne démarre. J'ai trouvé une question similaire sur ce site et la réponse a été d'utiliser MemoryPoolMXBean. Cela ressemble à la bonne façon, car nous pouvons obtenir une notification lorsque la mémoire libre AFTER GC est en dessous d'un avertissement. Mais ... quelle piscine surveiller? Je ne veux pas que mon implémentation dépende du type de GC que la JVM a décidé d'utiliser. Une option consisterait à additionner l'utilisation de tous les pools de mémoire de tas et à l'utiliser comme statistique. Est-ce une bonne solution?Comment utiliser MemoryPoolMXBean
Merci, Doron
Votre solution devrait déjà être assez bonne, je ne pense pas qu'il y en ait une meilleure. – Heri
Oui, il semble que la somme de la mémoire libre dans tous les pools de mémoire de tas fonctionne. Ce n'est pas 100% précis mais les tests l'ont suffisamment démontré pour notre contrôle de congestion. – daramasala