превышен превышение лимита GC "означает, что сборщик мусора работает все время, а программа Java делает очень медленный прогресс.
blockquote>После сбора мусора, если процесс Java тратит более 98% своего времени на сборку мусора , и если он восстанавливает менее 2% кучи и делал до сих пор последние 5 последовательных сборок мусора, затем вызывается java.lang.OutOfMemoryError
- Увеличьте размер кучи , если текущий
- Если вы все еще получаете эту ошибку после увеличения памяти кучи, используйте инструменты профилирования памяти , такие как MAT (инструмент анализатора памяти), Visual VM и т. д. и исправить утечки памяти.
- Обновить версию JDK до последней версии (1.8.x) или не менее 1.7.x и использовать алгоритм G1GC. Пропускная способность для G1 GC - 90% времени приложения и 10%
- Помимо настройки памяти кучи с помощью
Xms1g -Xmx2g
, попробуйте-XX:+UseG1GC -XX:G1HeapRegionSize=n -XX:MaxGCPauseMillis=m -XX:ParallelGCThreads=n -XX:ConcGCThreads=n
. Посмотрите на некоторые более связанные вопросы, касающиеся G1GC
Сбор мусора и документация по G7 [JGK 7] для G1
Я не знаю, что любой использует ДОЛЛАР вполне этим способом все же, хотя это - определенно один из его случаев надлежащего использования. Одна интересная вещь рассмотреть состоит в том, что деревья выражений ДОЛЛАРА были объединены с деревьями выражений LINQ, таким образом, IL, производимый для LINQ в некоторой пока еще необъявленной будущей версии Visual Studio, будет использовать код ДОЛЛАРА.
Аккуратный аспект выпуска ДОЛЛАРА как открытый исходный код - то, что мы понятия не имеем, какие виды интересных вещей люди за пределами компании могли бы делать с ним :).