После замены операционной системы рабочего компьютера Win7, мой Myeclipse был неудовлетворительным в запуске и скорости работы. Особенно при изменении и отладке нескольких шаблонов страниц одновременно переключение между двумя файлами всегда будет застрять в течение примерно десяти секунд. Попытка отключить различные плагины и проверить их, не поможет. Поэтому после примерно изучения JVM я решил попытаться решить эту проблему с точки зрения JVM.
Начать оптимизация:
Во -первых, давайте посмотрим на параметры запуска по умолчанию в myeclipse.ini:
-Xmx512m: установите максимальное значение памяти кучи на 512m
-Xx: maxpermsize = 256 м: установите максимальное значение постоянной генерации на 256 м
-Xx: ReservedCodeCachesize = 64M: установите размер памяти, занятый кодом, на 64м
Ничего не видно из параметров запуска, поэтому добавьте соответствующие параметры для печати изменений памяти:
-Xx:+printgctimestamps: распечатать временные метки каждого GC
-Xx:+printgcdetails: печатная подробная информация для каждого GC
-Xloggc: myeclipsegc.log: вывод записи GC в файл
-Вербоз: GC: выводит соответствующую ситуацию каждого GC
Затем начните Myeclipse и проверьте информацию в Myeclipsegc.log:
Стартап занимает около 30 секунд. Селективно перехватывать небольшую часть журналов. Вы можете видеть, что за первые 10 секунд запуска Myeclipse JVM выполнил более 300 GC и 9 полных GC.
Из частоты GC и информации можно видеть, что скорость восстановления памяти очень высока, а размер постоянно регулируется. Это должно быть связано с недостаточным пространством в молодом поколении, и необходимо значительное начальное значение.
Затем сосредоточьтесь на полном GC:
Скопируйте код следующим образом: 5,961: [Полный GC 5,961: [Город: 34568K-> 34456K (49676K), 0,1397651 сек.] 35336K-> 34456K (53452K), [PRMS: 26623K-> 26458K (26624K), 0,1359, 0,139. [Время: пользователь = 0,14 SYS = 0,00, Реал = 0,14 сек]]
9.030: [Full GC 9.030: [С трудом: 53310K-> 52332K (64588K), 0,2034757 сек] 56020K-> 52332K (69516K), [Perm: 43007K-> 42996K (43008K), 0,2036030-секунды. SYS = 0,00, реально = 0,20 секунды]
Из сравнения двух журналов мы видим, что полный GC в основном перерабатывает две области штатных и перми, и размеры этих двух областей постоянно корректируются, поэтому мы решили сначала исправить их размер.
Таким образом, скорректированные параметры следующие:
-Xms512m: установите минимальное значение стека на 512m
-Xmn192m: Установите размер молодого поколения на 192m
-Xx: permsize = 192m: установите начальное значение постоянного поколения на 192 млн.
-Xx: maxpermsize = 192m
-Xx: ReservedCodeCachesize = 64M
-Xx:+printgctimestamps
-Xx:+printgcdetails
-Xloggc: myeclipsegc.log
-Вербоз: GC
Перезапустите MyeClipse один раз, чтобы просмотреть информацию о журнале:
Стартап занял около 12 секунд. Из журнала видно, что в течение первых 10 секунд было выполнено только 5 GCS, и никаких корректировок к размеру каждой области не были вовлечены. Этот результат приемлем, потому что он не требует частых перезагрузков во время работы.
Оптимизация скорости отклика рабочего:
Затем я изучал частые задержки и проблемы с большими картами при переключении HTML -файлов вперед и назад, которые долго беспокоили меня. Чтобы более интуитивно изучить изменения памяти JVM, я решил использовать JConsole, вспомогательный инструмент, который поставляется с Java. Сначала восстановите параметры myeclipse.ini, чтобы избежать помех от первой стадии оптимизации.
Начните Myeclipse, запустите JConsole и подключитесь к JVM, где находится Myeclipse. Диаграмма памяти всей кучи после конюшни выглядит следующим образом:
Затем попробуйте открыть несколько шаблонов, а затем наблюдать за изменениями памяти.
Прежде всего, общее использование памяти кучи:
Видно, что после открытия нескольких шаблонов использование памяти кучи внезапно увеличилось с оригинала ниже 100 м до более чем 300 м. Использование утроилось, но оно все еще находится в пределах 512 млн, я установил. Следовательно, вы можете временно рассмотреть возможность продолжения увеличения памяти кучи, а вместо этого рассмотреть вопрос о регулировании соотношения размера памяти каждой зоны.
Таким образом, мы наблюдаем использование памяти каждой зоны в течение этого периода, среди которых зона Эдема выглядит следующим образом:
Скорость использования памяти в области EDEN значительно увеличилась в течение этого периода, и GC происходил несколько раз. Через приведенную ниже информацию о мониторингах, мы можем знать, что по умолчанию область EDEN выделяет только 31 млн. С максимальной памятью, что, очевидно, недостаточно. Выполнение небольшой точки вызовет GC в области Эдема. Это должно быть одной из причин задержки задержки в выключателе открытия шаблона и необходимо настроить.
Далее находится штатная область:
Максимальное пространство, выделенное JVM по этой области по умолчанию, составляет 470 м. По мере изменения использования памяти фактический размер этой области постоянно регулируется. Полный GC будет происходить каждый раз, когда размер площади регулируется, что должно быть одной из причин частых больших блоков. Открытие нового шаблона является основной причиной для запуска этой корректировки. С точки зрения использования памяти в этой области, все еще необходимо поддерживать определенное количество избыточности, поддержав и исправляя пространство памяти в этой области на уровне около 450 м.
С этой точки зрения, все еще необходимо расширить память о воде JVM, чтобы поддерживать более крупную область и район Эдема.
Наконец, давайте посмотрим на область Perm:
В рамках области метода изменения памяти в этой области не являются большими и относительно стабильными, поэтому нет необходимости оставлять слишком много избыточности. Однако, учитывая, что фактический объем кода открытого в настоящее время проекта не является большим, он решил временно поддерживать его на уровне 128 м и медленно отрегулировать его в будущем.
Таким образом, в соответствии с приведенным выше анализом, параметры корректируются на:
-Xmx768m
-Xms768m
-Xmn256m
-Xx: permsize = 192 м
-Xx: maxpermsize = 192m
-Xx: ReservedCodeCachesize = 64M
Перезапустите MyeClipse, подключитесь к JConsole и одновременно откройте тридцать шаблонов, чтобы пройти тест. Глядя на скорость использования памяти в каждой зоне, я нашел проблему. После корректировки молодого поколения до 256 м, поскольку Eden больше не часто встречается в GC, объем данных, поступающих в штатную область, значительно уменьшается. Диаграмма использования памяти штатной области заключается в следующем:
Как показано на рисунке выше, когда многие шаблоны преднамеренно открываются, пространство 450 м+ используется только менее 250 м, а скорость использования пространства слишком низкая, поэтому необходимо внести корректировки.
Суммировать
Выше приведено некоторые идеи и процесс настройки для меня, чтобы настроить мой Myeclipse. В реальном использовании я внес несколько корректировок и настройки в соответствии с моими предпочтениями. Окончательные параметры myeclipse.ini заключаются в следующем:
-vmargs
-Xmx512m
-Xms512m
-Xmn192m
-Xx: permsize = 128m
-Xx: maxpermsize = 128m
-Xx: ReservedCodeCachesize = 64M
В соответствии с этим параметром скорость отклика Myeclipse относительно гарантирована, а частота различных задержек значительно снижается. Недостатком является то, что системная память, занятая постоянным резидентом, относительно высока. Студенты, которые любят открывать несколько Myeclipse одновременно, могут вносить соответствующие коррективы в соответствии с их потребностями и реальными условиями.
Выше приведено в этой статье, я надеюсь, что это будет полезно для каждого обучения.