2016-02-18 3 views
3

Я пытаюсь понять, сколько памяти выделяет программа Java, и я считаю, что JVM не предоставляет для этого опции.Общее распределение Java-программы

Я не прав?

Так я бегу свою программу с помощью опций

-XX:+PrintGCDetails -XX:+PrintGCDateStamps

И до сих пор я использовал коллектор G1GC и Параллельное Марка и подметать коллектор.

И для обоих коллекторов я получил следующие результаты:

Heap garbage-first heap total 27545600K, used 1882393K ... region size 4096K, 289 young (1183744K), 41 survivors (167936K) Metaspace used 3687K, capacity 4660K, committed 4864K, reserved 1056768K

и

Heap par new generation total 620544K, used 319848K ... eden space 551616K, 52% used ... from space 68928K, 40% used ... to space 68928K, 0% used ... concurrent mark-sweep generation total 1379008K, used 44914K [0x000000015fb90000, 0x00000001b3e40000, 0x0000000800000000) Metaspace used 3688K, capacity 4660K, committed 4864K, reserved 1056768K

Интересно, если значения рядом с «общей» то, что я ищу ,

И если да, то каковы значения рядом с 'use'?

Заранее спасибо

ответ

2

Цифры рядом с «используется», являются суммы, использованные из общей суммы. Чтобы увеличить выделенную сумму, вы можете указать, сколько было освобождено, а также разница в том, сколько используется.

Однако использование профайлера памяти, такого как бортовой самописец или VisualVM, намного упрощает анализ использования памяти и почему.

+0

Итак, поле «used» содержит количество байтов, которые не были собраны в конце выполнения, то есть сколько памяти все еще выделено. Верный? – franco

+1

@franco правильный. –

Смежные вопросы