Différence entre mémoire physique et JVM

Résolu
Bonjour,

j'ai une question svp,quel est la différence entre la mémoire allouée à la JVM et celle de la mémoire physique,existe t'il une relation et merci

2 réponses

  1. Modérateur
    La mémoire de la JVM est inférieure à la mémoire physique.
    Tous les programmes se voient attribuer plus ou moins de mémoire lors du démarrage, la JVM est un programme comme les autres, à part que l'on peut explicitement définir la quantité de mémoire dans les options... mais pas plus que la mémoire physique disponible !
    1. ok merci KX,
      j'ai intégré dans mon application l'API jFreeChart afin d'améliorer la présentation de l'interface,ma question est si je veut superviser la quantité de mémoire physique utilisée ainsi que celle qui est Free est ce que cette API sera le bon choix et merci
      1. Modérateur
        JFreeChart ne gérera que de la partie affichage des graphiques, mais pour contrôler l'état de la mémoire physique il faudrait déjà que tu puisses accéder à ces informations, et ce n'est pas cette API qui te les fournira... il faudra regarder OperatingSystemMXBean.
      2. j'ai cherché sur le net et j'ai trouvé cet exemple http://www.koders.com/java/fidAC2CC42CB6511A1240DFE1A6BE1B9D04D34CF001.aspx?s=Pie
        jFreeChart capable de montrer l'état de mémoire est ce qu'il s'agit de la JVM ou de la mémoire physique et merci encore KX
      3. Modérateur
        Il suffit de regarder le code pour le savoir :

        public void actionPerformed(ActionEvent event) {
            long f = Runtime.getRuntime().freeMemory();
            long t = Runtime.getRuntime().totalMemory();
            addTotalObservation(t);
            addFreeObservation(f);
        }

        C'est donc la mémoire de la JVM qui est affiché, et non la mémoire physique, mais ce n'est pas une surprise parce que récupérer la mémoire physique est plus compliqué vu qu'il faut interroger le système, mais je t'ai donné hier un lien qui te permettra de modifier cette portion de code.
      4. bonjour KX,
        merci pour l'aide mais j'ai une autre question,j'ai une idée qui consiste à superviser la mémoire physique sous forme d'un timeline (en réel) en représentant ça avec jFreechart,est ce que c'est possible?et si celle ci est faisable comment je peut le faire et merci encore une fois
      5. Modérateur
        Entre le code que tu as trouvé, et le lien que je t'ai donné hier, tu as juste à modifier la portion de code que je t'ai indiqué, pour arriver à tes fins...

        import com.sun.management.OperatingSystemMXBean;
        
        public void actionPerformed(ActionEvent event)
        {
            OperatingSystemMXBean operatingSystem = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
        
            long f = operatingSystem.getFreePhysicalMemorySize();
            long t = operatingSystem.getTotalPhysicalMemorySize();
            addTotalObservation(t);
            addFreeObservation(f);
        }

        Remarque : il faudra inclure la librairie rt.jar que tu trouveras dans le dossier jre/lib de ta JDK