O Java e uma linguagem de programacao muito poderosa, mas desde que me entendo por gente, tem problema de gerenciamento de memoria.Recentemente, realizamos a implantacao de uma URA (Unidade de Resposta Audivel) que tem um backend para integracao com o CTI e com a base de dados do cliente. Toda a integracao foi desenvolvida em Java e rodava inicialmente em Tomcat, mas foi migrada para o Jetty com o objetivo de evitar problemas de gerenciamento de memoria.Eis que um belo dia, surge a surpresa. O Jetty simplesmente fechava, depois de um periodo de producao, com carga. O processo desaparecia e nao tinha nada no log mostrando o que houve.Comecamos a monitorar o sistema e recebi a seguinte mensagem no prompt quando o problema aconteceu novamente:# An unexpected error has been detected by Java Runtime Environment:## java.lang.OutOfMemoryError: requested 264496 bytes for Chunk::new. Out of swap space?## Internal Error (414C4C4F434154494F4E0E43505000C7), pid=7896, tid=1878612880## Java VM: Java HotSpot(TM) Server VM (1.6.0-b105 mixed mode)# An error report file with more information is saved as hs_err_pid7896.log[thread 1406139280 also had an error]## If you would like to submit a bug report, please visit:# http://java.sun.com/webapps/bugreport/crash.jsp#Pesquisei na Internet e encontrei informacoes referentes a um possivel bug na Java VM. Putz, como eu estava com sorte. Tudo bem. Atualizei para a ultima JVM, colocamos na producao novamente e o problema apareceu novamente.Vi em varios sites na Internet orientando para aumentar o heap atraves do parametro -Xmx. Testei, mas nao funcionou.Foi entao que descobri que o problema estava relacionado a uma limitacao da JVM 32bits de usar no maximo 2GB no heap size. Ou seja, o Jetty comecava a alocar os recursos e quando chegava nos 2GB de alocacao, gerava esse problema de OutOfMemoryError.java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space?Essentially the native objects does not have enough memory to use. This is usually because you have allocated too much memory to your heap reducing the amount available for native objects. See this article.The solution is to reduce the amount of heap memory you have allocated. For example if you have set -Xmx4096, you should consider reducing this to -Xmx2048m.Remember if you are using a 32bit JVM you cannot allocate more than -Xmx2048m for linux (and even less for windows). Using a 64 bit JVM can resolve this problem, but is not recommended for fisheye/crucible instances (refer to System Requirements).Solucao: Limitar o seu max heap size em 2048.Para quem precisa fazer tunning em servidores de aplicacao Java seguem alguns links uteis:Java Tunning White PaperJava HotSpot VM OptionsFix Out of Memory errors by increasing available memory Quem trabalha com informatica fatalmente vai ter que mexer com tudo. No inicio voce trabalha somente com redes ou com desenvolvimento de software, mas atualmente as duas areas estao cada vez mais integradas.O desenvolvedor de software tem que conhecer cada vez mais de redes, seguranca e protocolos de comunicacao para desenvolver um software eficiente, que consuma poucos recursos, seja seguro e tenha qualidade. Ja o administrador de redes, precisa conhecer o desenvolvimento de software para conseguir monitorar as aplicacoes que funcionam no seu servidor, verificar questoes