Эта альтернатива разбивает строку на пробел.
Затем, используя массив, функция 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"));
С чем-то вроде JProfiler все, что вам нужно сделать, это добавить определенные параметры в JVM. Он использует JVMTI.
Я думаю, вам стоит почитать о профилировщиках и о том, что они могут сделать для вас. Я также предлагаю ознакомиться с JVMTI.
Интерфейс инструментов JVMTM (JVM TI) - это новый нативный интерфейс программирования для использования инструментами. Он предоставляет как способ проверки состояния, так и контроль выполнения приложений, запущенных на виртуальной машине Java (JVM). JVM TI поддерживает полный набор инструментов, которым необходим доступ к состоянию JVM, включая, в том числе: инструменты профилирования, отладки, мониторинга, анализа потоков и анализа покрытия.
Примечание. TI JVM заменяет интерфейс профилировщика виртуальных машин Java ( JVMPI) и интерфейс отладки виртуальной машины Java (JVMDI). JVMPI и JVMDI будут удалены в следующем основном выпуске J2SETM.
Хорошее место для начала - посмотреть, поддерживает ли ваша JVM "java -Xrunhprof", поскольку это может генерировать информацию о профилировании кучи. без усложнения сценария.
См. http://docs.oracle.com/javase/7/docs/technotes/samples/hprof.html
. Вы можете найти, что этого достаточно для начала.
Некоторые профилировщики, такие как yourkit , имеют API для отслеживания выделения памяти. Другим вариантом здесь являются инструменты мониторинга, такие как jxinsight или glassbox или jamon
Для анализа дампов кучи лучше всего подходит инструмент Eclipse Memory Analyzer . Это бесплатный и открытый исходный код, так что вы можете автоматизировать анализ дампов кучи столько, сколько захотите.
Я разрабатываю в Eclipse, но у меня есть Netbeans, чтобы использовать его превосходный Profiler. Он ограничен по сравнению с некоторыми коммерческими, но все еще достаточно хорош для выявления большинства узких мест
В дополнение к вышеупомянутым ответам мне также понравилось использовать profiler a пару лет назад Не знаю, поможет ли это.
Вы можете использовать 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
...