2013-07-10 4 views
0

Я использую BIRT для запуска отчета на сервере, который, как известно, способен обрабатывать относительно большие наборы данных. Однако этот отчет не будет работать правильно и выдает следующее сообщение об ошибке:Ошибка выполнения BIRT - java.lang.OutOfMemoryError: превышен верхний предел GC

Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded 

Я не уверен, почему предел памяти будет достигнут с учетом характера этого доклада. Он возвращает приблизительно 20 строк и делает ограниченную предварительную обработку данных.

Полная ошибка ниже:

org.eclipse.birt.report.engine.api.EngineException: Error happened while running the report. 
Hide Exception Stack Trace 
Stack Trace: 
org.eclipse.birt.report.engine.api.EngineException: Error happened while running the report. 
    at org.eclipse.birt.report.engine.api.impl.EngineTask.handleFatalExceptions(EngineTask.java:2256) 
    at org.eclipse.birt.report.engine.api.impl.RunTask.doRun(RunTask.java:270) 
    at org.eclipse.birt.report.engine.api.impl.RunTask.run(RunTask.java:86) 
    at org.eclipse.birt.report.service.ReportEngineService.runReport(ReportEngineService.java:1325) 
    at org.eclipse.birt.report.service.BirtViewerReportService.runReport(BirtViewerReportService.java:158) 
    at org.eclipse.birt.report.service.actionhandler.BirtRunReportActionHandler.__execute(BirtRunReportActionHandler.java:81) 
    at org.eclipse.birt.report.service.actionhandler.BirtChangeParameterActionHandler.runReport(BirtChangeParameterActionHandler.java:58) 
    at org.eclipse.birt.report.service.actionhandler.AbstractChangeParameterActionHandler.__execute(AbstractChangeParameterActionHandler.java:53) 
    at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(AbstractBaseActionHandler.java:90) 
    at org.eclipse.birt.report.soapengine.processor.AbstractBaseDocumentProcessor.__executeAction(AbstractBaseDocumentProcessor.java:47) 
    at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.executeAction(AbstractBaseComponentProcessor.java:143) 
    at org.eclipse.birt.report.soapengine.processor.BirtDocumentProcessor.handleChangeParameter(BirtDocumentProcessor.java:100) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.process(AbstractBaseComponentProcessor.java:112) 
    at org.eclipse.birt.report.soapengine.endpoint.BirtSoapBindingImpl.getUpdatedObjects(BirtSoapBindingImpl.java:66) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397) 
    at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186) 
    at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) 
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
    at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454) 
    at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) 
    at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) 
    at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(BirtSoapMessageDispatcherServlet.java:265) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:122) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.eclipse.birt.report.filter.ViewerFilter.doFilter(ViewerFilter.java:68) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1805) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded 
+0

У меня тот же вопрос. Также это происходит, когда я экспортирую данные в формате Excel. Какие-нибудь Новости? Благодарю. –

+0

Я никогда не решал это и не знаю, что я использовал в качестве обходного пути. Слишком давно. Сожалею. – zgall1

+0

Очень странно: отчет успешно работает в ящике с 7,5 ГБ ОЗУ, но не работает в ящике с 16 ГБ ОЗУ. Кто-нибудь нашел решение – DWGuru

ответ

0

Я получил это решается наконец setenv.bat или setenv.sh работает только при использовании сценариев запуска для запуска кота. Если у вас есть настройка tomcat как службы, setenv не будет вызываться.

После того как вы установки службы кот выполнить tomcat8w.exe (я использую Tomcat версии 8, используйте исполняемый файл, соответствующий вашей версии)

вы получите окно, нажмите на вкладку Java установить начальный пул памяти и максимальный пул памяти. Ваш отчет birt начинает работать нормально

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

tomcat8w // MS //

Это позволит вам настроить JVM для кота.

Проверить Apache Howto ссылки для получения дополнительной информации