Java heap space

3 respostas
E

Estou com problemas na utilizacao dessas areas de armazenamento

LinkedList
e
ResultSet

Alguem sabe como aumenta-las no Java ?
Obrigado

OBS: nao posso utilizar outro tipo.
utilizo o TomCat 6.0

ERRO recebido:

Nov 11, 2009 12:54:13 PM org.apache.catalina.core.ApplicationContext log

INFO: ContextListener: contextInitialized()

Nov 11, 2009 12:54:13 PM org.apache.catalina.core.ApplicationContext log

INFO: SessionListener: contextInitialized()

Nov 11, 2009 12:59:22 PM org.apache.catalina.core.StandardWrapperValve invoke

SEVERE: Servlet.service() for servlet TwServ threw exception

java.lang.OutOfMemoryError: Java heap space

at java.text.RuleBasedBreakIterator.readFile(Unknown Source)

at java.text.RuleBasedBreakIterator.readTables(Unknown Source)

at java.text.RuleBasedBreakIterator.<init>(Unknown Source)

at java.text.BreakIterator.createBreakInstance(Unknown Source)

at java.text.BreakIterator.getBreakInstance(Unknown Source)

at java.text.BreakIterator.getLineInstance(Unknown Source)

at java.text.BreakIterator.getLineInstance(Unknown Source)

at java.awt.font.LineBreakMeasurer.<init>(Unknown Source)

at net.sf.jasperreports.engine.fill.TextMeasurer.renderParagraph(TextMeasurer.java:260)

at net.sf.jasperreports.engine.fill.TextMeasurer.measure(TextMeasurer.java:221)

at net.sf.jasperreports.engine.fill.JRFillTextElement.chopTextElement(JRFillTextElement.java:515)

at net.sf.jasperreports.engine.fill.JRFillTextField.prepare(JRFillTextField.java:514)

at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:343)

at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:311)

at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:275)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1291)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillGroupHeader(JRVerticalFiller.java:542)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillGroupHeaders(JRVerticalFiller.java:486)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportContent(JRVerticalFiller.java:246)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:132)

at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:750)

at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666)

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:517)

at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:385)

at com…servicos.TwClsM5Op01x.Tw_PRINT_RELATORIO(TwClsM5Op01x.java:2195)

at com…servicos.TwClsM5Op01x.Tw_PRINT_GERAL(TwClsM5Op01x.java:1750)

at com…servicos.TwClsM5Op01x.Tw_PRINT_REL051(TwClsM5Op01x.java:1943)

at com…servicos.TwClsM5Op01x.Tw_PROC_ABRIR(TwClsM5Op01x.java:245)

at com.xxxx.servicos.TwClsGenerica1.Tw_PROCESSAR_EVENTO(TwClsGenerica1.java:124)

at com.xxxx.servicos.TwClsGenerica1.Tw_PROCESSAR_COM_DB(TwClsGenerica1.java:102)

3 Respostas

V

Bom, você aparentemente está tentando carregar coisas demais no seu list. Ou pode ter um memory leak. Se for o caso de um leak, é melhor usar um profiler, e medir onde tanta memória está sendo gasta.

Você já pensou em carregar coisas aos poucos? As vezes isso também resolve o problema, sem a necessidade de aumentar o heap.

Se sua aplicação realmente ocupa muita memória, talvez seja necessário configurar o parâmetro -XmX de execução da sua VM:
http://hausheer.osola.com/docs/5

E

Professor Vinicius, como vai???
Sou seu ex-aluno na UFPR, e agora preciso de sua ajuda por aqui… rs…

Estou tendo que programar o Jasper Reports, e gerar um monte de relatórios. Funciona, mas às vezes sobrecarrega a memória.

O erro ocorre em um dos loopings que carrego o openReport para salvar o PDF,… Mas rodo um por vez, não gero tudo de uma vez.

Lembrando que eu sempre coloco no FINALLY do TRY o seguinte >

response.setContentType(“application/pdf”);

ServletOutputStream outputStream = response.getOutputStream();

.

.

.

outputStream.flush();

outputStream.close();

O meu openReport está bem simples >

public static void openReport(
        String titulo,
        InputStream inputStream,
        Map<String, Object> parametros,
        String path, Boolean exibirJanela ) throws JRException {
        JasperPrint jasperPrint;
        jasperPrint = JasperFillManager.fillReport(
          inputStream, parametros, new JREmptyDataSource());

        //JasperPrint print = JasperFillManager.fillReport(
          //      inputStream, parametros);
        JasperExportManager.exportReportToPdfFile(jasperPrint, path);

}

Até tentei fechar o inputStream >

finally

{

inputStream.close();

}

E, inclusive, tô usando o GZIP >

//Instancia o virtualizador

JRAbstractLRUVirtualizer virtualizer = new JRGzipVirtualizer(1);

param.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);

.

.

.

virtualizer.cleanup();

Veja só o erro >

Dez 02, 2011 10:21:07 AM org.apache.catalina.core.StandardContext reload

Informações: Reloading Context with name [/positivo] has started

Dez 02, 2011 10:21:10 AM org.apache.catalina.core.StandardContext reload

Informações: Reloading Context with name [/positivo] is completed

log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).

log4j:WARN Please initialize the log4j system properly.

Dez 02, 2011 10:21:21 AM org.apache.catalina.core.StandardContext reload

Informações: Reloading Context with name [/positivo] has started

Dez 02, 2011 10:21:21 AM org.apache.catalina.core.StandardWrapper unload

Informações: Waiting for 1 instance(s) to be deallocated

Dez 02, 2011 10:21:22 AM org.apache.catalina.core.StandardWrapper unload

Informações: Waiting for 1 instance(s) to be deallocated

Dez 02, 2011 10:21:23 AM org.apache.catalina.core.StandardWrapper unload

Informações: Waiting for 1 instance(s) to be deallocated

Dez 02, 2011 10:21:23 AM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc

Grave: The web application [/positivo] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

Dez 02, 2011 10:21:23 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads

Grave: The web application [/positivo] is still processing a request that has yet to finish. This is very likely to create a memory leak. You can control the time allowed for requests to finish by using the unloadDelay attribute of the standard Context implementation.

Dez 02, 2011 10:21:23 AM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks

Grave: The web application [/positivo] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@3def47bf]) and a value of type [net.sf.jasperreports.engine.export.legacy.BorderOffset$1] (value [net.sf.jasperreports.engine.export.legacy.BorderOffset$1@284f6c5d]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

Dez 02, 2011 10:21:23 AM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks

Grave: The web application [/positivo] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@76536257]) and a value of type [net.sf.jasperreports.repo.SimpleRepositoryContext] (value [net.sf.jasperreports.repo.SimpleRepositoryContext@5c5d7a71]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

Dez 02, 2011 10:21:23 AM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks

Grave: The web application [/positivo] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@7d11c016]) and a value of type [java.lang.Class] (value [class Relatorio32Comparativo324532Parte322_1322827418806_705702]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

Dez 02, 2011 10:21:23 AM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks

Grave: The web application [/positivo] created a ThreadLocal with key of type [net.sf.jasperreports.engine.util.JRFontUtil$1] (value [net.sf.jasperreports.engine.util.JRFontUtil$1@185a2480]) and a value of type [java.util.HashSet] (value [[]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

Dez 02, 2011 10:21:23 AM org.apache.catalina.loader.WebappClassLoader findResourceInternal

Informações: Illegal access: this web application instance has been stopped already.  Could not load relatorio/Relatorio2.jasper.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.

java.lang.NullPointerException

Dez 02, 2011 10:21:23 AM org.apache.catalina.loader.WebappClassLoader loadClass

Informações: Illegal access: this web application instance has been stopped already.  Could not load javax.servlet.ServletOutputStream.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.

java.lang.IllegalStateException

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1562)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)

at servlet.TGeracaoRelatorio.processRequest(TGeracaoRelatorio.java:145)

at servlet.TGeracaoRelatorio.doGet(TGeracaoRelatorio.java:326)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

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:240)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)

at java.lang.Thread.run(Thread.java:722)
Dez 02, 2011 10:21:23 AM org.apache.catalina.connector.CoyoteAdapter service

Grave: An exception or error occurred in the container during the request processing

java.lang.NullPointerException

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:278)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)

at java.lang.Thread.run(Thread.java:722)

Dez 02, 2011 10:21:28 AM org.apache.catalina.core.StandardContext reload
Informações: Reloading Context with name [/positivo] is completed
Dez 02, 2011 10:21:28 AM org.apache.catalina.core.StandardContext reload
Informações: Reloading Context with name [/positivo] has started
Dez 02, 2011 10:21:31 AM org.apache.catalina.core.StandardContext reload
Informações: Reloading Context with name [/positivo] is completed

GRANDE ABRAÇO, E OBRIGADO PELO SUPORTE!

V

Oi.

Qual aluno?

O que tem nas linhas?

at servlet.TGeracaoRelatorio.processRequest(TGeracaoRelatorio.java:145)

at servlet.TGeracaoRelatorio.doGet(TGeracaoRelatorio.java:326)

Ao postar código, por favor, use a tag code:

Criado 11 de novembro de 2009
Ultima resposta 2 de dez. de 2011
Respostas 3
Participantes 3