2010-10-28 5 views
2

Je voudrais comparer l'utilisation de la mémoire, pour allouer l'objet Calendrier et l'objet DateTime de Joda.Calcul de la mémoire requise pour les objets alloués

// How much memory required to allocate 100 Calendar objects? 
for (int i = 0; i < 100; i++) { 
    Calendar c = Calendar.getInstance(); 
    l = l + c.getTimeInMillis(); 
    CalendarList.add(c); 
} 

// How much memory required to allocate Joda TimeDate objects? 
for (int i = 0; i < 100; i++) { 
    DateTime dateTime = new DateTime(); 
    l = l + dateTime.getMillis(); 
    DateTimeList.add(dateTime); 
} 

Puis-je savoir est-il un code que je peux ajouter à mesurer?

Répondre

2

Utilisez l'instrumentation pour obtenir une indication d'utilisation de la mémoire:

public class MemUsage { 

    public static void main(String[] args) { 
     Instrumentation instr = InstrumentationAgent.getInstrumentation(); 
     if (instr == null) { 
      System.err.println("No Instrumentation, use the VM option \"-javaagent:Instrumentation.jar\""); 
      return; 
     } 
     System.out.println(); 
     System.out.println("an implementation-specific approximation of the amount of storage"); 
     System.out.println("Calendar = " + instr.getObjectSize(Calendar.getInstance())); 
     System.out.println(); 
    } 
} 

option Autre: MemoryMXBean mais je jamais utilisé cela.

2

Vous pouvez utiliser l'outil Java visual vm, là vous pouvez voir quels objets prennent quelle mémoire. Je ne pense pas qu'il existe une solution "dans le code" qui soit correcte dans tous les cas avec quelques lignes de code.

Questions connexes