9
votes

Collecteur à déchets par défaut pour une JVM

Dupliqué possible:
Trouvez quel type de collecteur à ordures est en cours d'exécution

Y a-t-il un moyen de dire quel collecteur à déchets est utilisé dans une JVM par défaut?


3 Réponses :


4
votes

est JConsole Ce que vous êtes Après?

Extraits:

Collecteur de déchets Informations: informations sur GC, y compris les noms de collecteur des ordures, nombre de collections effectuées et temps total passé à effectuer GC.


1 commentaires

Eh bien, je veux juste savoir quand je me frappe des processus Java, quel est le collecteur des ordures qui est utilisé. Je dispose d'une question de savoir-faire qui se produit lorsque j'utilise une vérité plus récente (1.6.0_20) de la JRE. Avec la version plus ancienne (1.6.0_5), je ne vois pas le problème. Le test que je suis en cours d'exécution est bien sûr cohérent. Je suppose que cela pourrait être associé au collecteur des ordures étant utilisé. J'ai cherché beaucoup sur Net mais incapable de trouver un moyen de dire ce que GC est utilisé dans une version JRE particulière par défaut.



13
votes

Ceci imprimera une liste de tous les collecteurs à déchets actuellement chargés dans votre JVM.

import java.lang.management.*;
import java.util.List;

public class x {
    public static void main(String args[]) {
        List<GarbageCollectorMXBean> l = ManagementFactory.getGarbageCollectorMXBeans();
        for(GarbageCollectorMXBean b : l) {
            System.out.println(b.getName());
        }
    }
}


0 commentaires

0
votes

Je pense que la réponse est que vous ne pouvez pas indiquer directement quel est le collecteur de déchets par défaut. Vous pouvez dire quels collectionneurs à déchets sont actuellement utilisés dans la JVM actuelle, mais cela dépend d'autres facteurs ... tels que les options JVM ... Vous ne pouvez donc pas déduire de manière fiable la GC par défaut de celle-ci.

En outre (non résistance de ce que @LUCAS dit), déduire (de manière fiable) quelle est la valeur par défaut par d'autres moyens serait difficile:

  • Comme @LUCAS indique, la valeur par défaut dépend de la question de savoir si la machine tombe dans la catégorie "Classe de serveur", et dans certains cas dépend des propriétés physiques de la machine impossible à accéder à de manière portante.

  • La documentation du processus est inégale, et pas nécessairement entièrement fiable.

  • Le comportement (classification "Classe de serveur", GC par défaut par classe, etc.) est susceptible de dépendre de la version Java. En effet, il peut même changer avec les versions de patch JVM.

    IMO, une meilleure approche consisterait à définir explicitement les options JVM lors du lancement du processus enfant et ne s'appuie pas sur les valeurs par défaut. Alternativement, allez simplement avec ce que la valeur par défaut est.


1 commentaires

Pourquoi le bowevote aléatoire?