Как динамически оценить использование памяти во время выполнения Java-программы? - PullRequest
0 голосов
/ 13 сентября 2018

когда мы определяем класс Java, мы можем получить использование памяти Obeject в куче, но мы не можем получить использование памяти во время выполнения из-за неизвестного поведения программы - например, как следующий класс:

public class Sample{
   private int age;
   private String name;
   private static List scores = new ArrayList<Integer>();
   public static void main(String[] args){
     Scanner sc = new Scanner(System.in);
     while(sc.hasNext()){
       scores.add(sc.nextInt());
     }
   }
}

тогда как нам получить использование памяти во время выполнения класса Sample?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вы можете получить другие параметры Java, такие как «Используемая память», например:

public class Sample{
   private int age;
   private String name;
   private static List scores = new ArrayList<Integer>();
   public static void main(String[] args){
     Scanner sc = new Scanner(System.in);
     while(sc.hasNext()){
       scores.add(sc.nextInt());
     }

        Runtime runtime = Runtime.getRuntime();

        System.out.println("Used Memory:" 
            + (runtime.totalMemory() - runtime.freeMemory()));

        System.out.println("Free Memory:" 
            + runtime.freeMemory());

        System.out.println("Total Memory:" + runtime.totalMemory());

        System.out.println("Max Memory:" + runtime.maxMemory());
   }
}

, если вы хотите рассчитать использование класса, вы должны получить эти параметры до и после запуска, чем класс, и сравнитьцифры

0 голосов
/ 13 сентября 2018

Есть несколько инструментов для этого. Вы можете использовать jvisualvm, который находится в вашем JDK. Кроме того, есть и коммерческие. Для получения дополнительной информации вы можете перейти по этой ссылке . Кроме того, вы можете установить плагин «visual GC» на jvisualvm, который показывает изменения в разных частях вашей кучи, например: Eden, оставшиеся в живых, old gen, metaspace. Даже время выполнения GC и время загрузки классов отслеживаются.

Чтобы установить плагин на jvisualvm из Tools-> plugins.

...