2015-10-23 2 views
0

Я попытался создать большой отчет. Я использую JavaEE + JSF + Oragle DB. Но мой выбор returm мне очень очень БОЛЬШИЕ данные. И мой сбой сервера с ошибкой:javax.servlet.ServletException: превышен верхний предел GC

HTTP Status 500 - Internal Server Error 

type Exception report 

messageInternal Server Error 

descriptionThe server encountered an internal error that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: GC overhead limit exceeded 
root cause 

java.lang.OutOfMemoryError: GC overhead limit exceeded 
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1 logs. 

GlassFish Server Open Source Edition 4.1 

Я не понимаю, как решить проблему. Разбиение страницы в dataTable работает нормально, но ошибка отображается на стороне сервера

+0

Насколько велики данные, которые вы возвращаете из своего запроса? Сколько одновременных пользователей запрашивают это? Вы составляете отчет о серверных 100 МБ? Можете ли вы поделиться своим запросом и кодом? Прочтите это, это по сути та же проблема: http://stackoverflow.com/questions/5839359/java-lang-outofmemoryerror-gc-overhead-limit-exceeded?lq=1 –

ответ

0

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

Смежные вопросы