Лучший способ представить использование памяти в JAVA-приложении?

Эта альтернатива разбивает строку на пробел.

Затем, используя массив, функция map преобразует строки в желаемый результат.

let swap = s =>
  s.split(/\s/).map(s => {
    let split = s.split(''),
      letters = [];

    if (split.length > 1) { // This is for string with only one char
      // Get the two chars -> He
      // reverse them -> eH
      letters = split.splice(0, 2).reverse();
    }

    return letters.join('') + split.join('');
  }).join(' ');

console.log(swap("Hello guys"));
console.log(swap("Ele From S"));

24
задан rlbond 16 April 2009 в 16:14
поделиться

8 ответов

С чем-то вроде JProfiler все, что вам нужно сделать, это добавить определенные параметры в JVM. Он использует JVMTI.

Я думаю, вам стоит почитать о профилировщиках и о том, что они могут сделать для вас. Я также предлагаю ознакомиться с JVMTI.

Интерфейс инструментов JVMTM (JVM TI) - это новый нативный интерфейс программирования для использования инструментами. Он предоставляет как способ проверки состояния, так и контроль выполнения приложений, запущенных на виртуальной машине Java (JVM). JVM TI поддерживает полный набор инструментов, которым необходим доступ к состоянию JVM, включая, в том числе: инструменты профилирования, отладки, мониторинга, анализа потоков и анализа покрытия.

Примечание. TI JVM заменяет интерфейс профилировщика виртуальных машин Java ( JVMPI) и интерфейс отладки виртуальной машины Java (JVMDI). JVMPI и JVMDI будут удалены в следующем основном выпуске J2SETM.

16
ответ дан 28 November 2019 в 23:47
поделиться

Yourkit также имеет довольно хороший профилировщик

6
ответ дан 28 November 2019 в 23:47
поделиться

Вы проверяли

VisualVM и Eclipse-Callisto ?

4
ответ дан 28 November 2019 в 23:47
поделиться

Хорошее место для начала - посмотреть, поддерживает ли ваша JVM "java -Xrunhprof", поскольку это может генерировать информацию о профилировании кучи. без усложнения сценария.

См. http://docs.oracle.com/javase/7/docs/technotes/samples/hprof.html

. Вы можете найти, что этого достаточно для начала.

3
ответ дан 28 November 2019 в 23:47
поделиться

Некоторые профилировщики, такие как yourkit , имеют API для отслеживания выделения памяти. Другим вариантом здесь являются инструменты мониторинга, такие как jxinsight или glassbox или jamon

Для анализа дампов кучи лучше всего подходит инструмент Eclipse Memory Analyzer . Это бесплатный и открытый исходный код, так что вы можете автоматизировать анализ дампов кучи столько, сколько захотите.

2
ответ дан 28 November 2019 в 23:47
поделиться

Я разрабатываю в Eclipse, но у меня есть Netbeans, чтобы использовать его превосходный Profiler. Он ограничен по сравнению с некоторыми коммерческими, но все еще достаточно хорош для выявления большинства узких мест

2
ответ дан 28 November 2019 в 23:47
поделиться

В дополнение к вышеупомянутым ответам мне также понравилось использовать profiler a пару лет назад Не знаю, поможет ли это.

1
ответ дан 28 November 2019 в 23:47
поделиться

Вы можете использовать jrcmd , который представляет собой утилиту командной строки, которая приходит с JRockit JVM. Если вы знаете pid процесса Java, вы можете просто сделать:

JROCKIt_HOME\bin\jrcmd <pid> print_object_summary

, и он даст вам:

31.8% 3198k    41907   -137k [C
11.9% 1196k      300     +0k [B
11.4% 1151k    49118     +6k java/lang/String
 6.1% 612k     5604     +0k java/lang/Class
 4.3% 431k     2388     +0k [I
 3.5% 353k    15097     +0k java/util/HashMap$Entry
 ...
2
ответ дан 28 November 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: