Другое потребление памяти с подобными конфигурациями

Кажется, что я смотрел в неправильном месте: 'Обработайте Редактора', доступно из главного меню Visual Stuido. Угадайте, я сделал все надлежащим способом, потому что эта опция была не всегда там :)

2
задан 6 November 2012 в 14:07
2 ответа

Итак, что происходит, одна из ваших JVM Tomcat пытается превысить выделенную для нее кучу 2048 МБ.

Похоже, вы ищете конкретный ответ, поскольку Это может быть контрольный список того, что можно попробовать, так что вот вам:

Исчерпание кучи происходит либо из-за утечки памяти, когда у вас происходит небольшая утечка при каждом запросе, либо в сценарии загрузки это может быть потому, что вы ' re просто бросает в JVM больше, чем она может обработать. Вы хотите определить, в чем проблема, поэтому начните с рассмотрения того, как вы генерируете свою нагрузку.

Если проблема возникает только на высоком уровне параллельных запросов, но никогда на более низком уровне, то проблема заключается в том, что количество запросов, умноженное на объем памяти, необходимой для обработки каждого запроса, слишком велик. Вам либо нужно, чтобы каждый запрос использовал меньше памяти, или каким-то образом ограничить параллелизм.

Если проблема возникает после обработки определенного количества запросов независимо от параллелизма, то у вас утечка памяти. Вам нужно найти его и освободить память.

В любом случае вам очень поможет хороший анализатор памяти кучи. Есть хорошие коммерческие, такие как YourKit Java Profiler, или бесплатные, например, Eclipse Memory Analyzer. Найдите инструмент, который подходит вам, и узнайте, как его использовать, чтобы узнать, что занимает память. Обратите внимание, что вам не обязательно использовать инструмент для запуска вашей программы - если вы запускаете нагрузочный тест на сервере, вы можете использовать инструмент командной строки jmap из JDK для захвата дампа кучи в файл, а затем используйте свой инструмент для анализа файла дампа. Инструмент покажет вам, какие объекты занимают место в вашей куче.

Если проблема возникает после обработки определенного количества запросов независимо от параллелизма, значит, у вас утечка памяти. Вам нужно найти его и освободить память.

В любом случае вам очень поможет хороший анализатор памяти кучи. Есть хорошие коммерческие, такие как YourKit Java Profiler, или бесплатные, например, Eclipse Memory Analyzer. Найдите инструмент, который вам подходит, и узнайте, как его использовать, чтобы узнать, что занимает память. Обратите внимание, что вам не обязательно использовать этот инструмент для запуска вашей программы - если вы запускаете нагрузочный тест на сервере, вы можете использовать инструмент командной строки jmap из JDK для захвата дампа кучи в файл, а затем используйте свой инструмент для анализа файла дампа. Инструмент покажет вам, какие объекты занимают место в вашей куче.

Если проблема возникает после обработки определенного количества запросов независимо от параллелизма, значит, у вас утечка памяти. Вам нужно найти его и освободить память.

В любом случае вам очень поможет хороший анализатор памяти кучи. Есть хорошие коммерческие, такие как YourKit Java Profiler, или бесплатные, например, Eclipse Memory Analyzer. Найдите инструмент, который вам подходит, и узнайте, как его использовать, чтобы узнать, что занимает память. Обратите внимание, что вам не обязательно использовать инструмент для запуска вашей программы - если вы запускаете нагрузочный тест на сервере, вы можете использовать инструмент командной строки jmap из JDK для захвата дампа кучи в файл, а затем используйте свой инструмент для анализа файла дампа. Инструмент покажет вам, какие объекты занимают место в вашей куче.

то у вас утечка памяти. Вам нужно найти его и освободить память.

В любом случае вам очень поможет хороший анализатор памяти кучи. Есть хорошие коммерческие, такие как YourKit Java Profiler, или бесплатные, например, Eclipse Memory Analyzer. Найдите инструмент, который подходит вам, и узнайте, как его использовать, чтобы узнать, что занимает память. Обратите внимание, что вам не обязательно использовать инструмент для запуска вашей программы - если вы запускаете нагрузочный тест на сервере, вы можете использовать инструмент командной строки jmap из JDK для захвата дампа кучи в файл, а затем используйте свой инструмент для анализа файла дампа. Инструмент покажет вам, какие объекты занимают место в вашей куче.

то у вас утечка памяти. Вам нужно найти его и освободить память.

В любом случае вам очень поможет хороший анализатор памяти кучи. Есть хорошие коммерческие, такие как YourKit Java Profiler, или бесплатные, например, Eclipse Memory Analyzer. Найдите инструмент, который вам подходит, и узнайте, как его использовать, чтобы узнать, что занимает память. Обратите внимание, что вам не обязательно использовать инструмент для запуска вашей программы - если вы запускаете нагрузочный тест на сервере, вы можете использовать инструмент командной строки jmap из JDK для захвата дампа кучи в файл, а затем используйте свой инструмент для анализа файла дампа. Инструмент покажет вам, какие объекты занимают место в вашей куче.

Есть хорошие коммерческие, такие как YourKit Java Profiler, или бесплатные, например, Eclipse Memory Analyzer. Найдите инструмент, который подходит вам, и узнайте, как его использовать, чтобы узнать, что занимает память. Обратите внимание, что вам не обязательно использовать инструмент для запуска вашей программы - если вы запускаете нагрузочный тест на сервере, вы можете использовать инструмент командной строки jmap из JDK для захвата дампа кучи в файл, а затем используйте свой инструмент для анализа файла дампа. Инструмент покажет вам, какие объекты занимают место в вашей куче.

Есть хорошие коммерческие, такие как YourKit Java Profiler, или бесплатные, например, Eclipse Memory Analyzer. Найдите инструмент, который вам подходит, и узнайте, как его использовать, чтобы узнать, что занимает память. Обратите внимание, что вам не обязательно использовать этот инструмент для запуска вашей программы - если вы запускаете нагрузочный тест на сервере, вы можете использовать инструмент командной строки jmap из JDK для захвата дампа кучи в файл, а затем используйте свой инструмент для анализа файла дампа. Инструмент покажет вам, какие объекты занимают место в вашей куче.

t обязательно необходимо использовать инструмент для запуска вашей программы - если вы запускаете нагрузочный тест на сервере, вы можете использовать инструмент командной строки jmap из JDK для захвата дампа кучи в файл, а затем использовать свой инструмент для анализа файла дампа. Инструмент покажет вам, какие объекты занимают место в вашей куче.

t обязательно необходимо использовать инструмент для запуска вашей программы - если вы запускаете нагрузочный тест на сервере, вы можете использовать инструмент командной строки jmap из JDK для захвата дампа кучи в файл, а затем использовать свой инструмент для анализа файла дампа. Инструмент покажет вам, какие объекты занимают место в вашей куче.

3
ответ дан 3 December 2019 в 10:10

Есть что-то между двумя системами, иначе поведение не было бы другим. Обратите внимание, что слишком много времени, потраченного на сборку мусора и слишком мало результата, также может вызвать ошибку. Работа близко к пределам кучи приводит к возникновению проблем с GC.

Excessive GC Time and OutOfMemoryError

Параллельный сборщик выдаст OutOfMemoryError, если слишком много время тратится на сборку мусора: если более 98% общее время тратится на сборку мусора и менее 2% кучи восстанавливается, будет выброшено OutOfMemoryError. Эта функция разработан для предотвращения работы приложений в течение длительного периода времени при небольшом прогрессе или отсутствии прогресса, потому что куча слишком небольшой. При необходимости эту функцию можно отключить, добавив опцию -XX: -UseGCOverheadLimit в командной строке.

1
ответ дан 3 December 2019 в 10:10

Теги

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