Différence entre mémoire physique et JVM

Résolu/Fermé
hayfa1200 Messages postés 70 Date d'inscription lundi 30 janvier 2012 Statut Membre Dernière intervention 16 mars 2015 - 8 juin 2012 à 16:54
hayfa1200 Messages postés 70 Date d'inscription lundi 30 janvier 2012 Statut Membre Dernière intervention 16 mars 2015 - 10 juin 2012 à 21:34
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

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
8 juin 2012 à 18:28
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 !
0
hayfa1200 Messages postés 70 Date d'inscription lundi 30 janvier 2012 Statut Membre Dernière intervention 16 mars 2015 1
9 juin 2012 à 16:13
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
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
9 juin 2012 à 16:22
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.
0
hayfa1200 Messages postés 70 Date d'inscription lundi 30 janvier 2012 Statut Membre Dernière intervention 16 mars 2015 1
10 juin 2012 à 20:21
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
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 10/06/2012 à 20:32
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.
0
hayfa1200 Messages postés 70 Date d'inscription lundi 30 janvier 2012 Statut Membre Dernière intervention 16 mars 2015 1
10 juin 2012 à 20:58
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
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
10 juin 2012 à 21:32
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
0