PDA

Ver la Versión Completa : OutOfMemoryError: PermGen space


jav_000
04-sep-2011, 15:24
Tengo contratado un hosting compartido con soporte para Tomcat. Este es el error que me he encontrado en el catalina.out mientras mi aplicación aparecía caída. Significa esto que es mi aplicación la que está consumiendo más memoria de la que tenía asignada o que la suma total de los que compartimos el hosting supera el tamaño de memoria asignada para todos?

Por otra parte, si yo por ejemplo subo una misma aplicación 3 veces, el consumo de memoria se triplica sólo por el hecho de subirla o depende de si se usan las 3 aplicaciones a la vez?

Un saludo y gracias.

OscarS
04-sep-2011, 20:11
Tengo contratado un hosting compartido con soporte para Tomcat. Este es el error que me he encontrado en el catalina.out mientras mi aplicación aparecía caída. Significa esto que es mi aplicación la que está consumiendo más memoria de la que tenía asignada o que la suma total de los que compartimos el hosting supera el tamaño de memoria asignada para todos?

Por otra parte, si yo por ejemplo subo una misma aplicación 3 veces, el consumo de memoria se triplica sólo por el hecho de subirla o depende de si se usan las 3 aplicaciones a la vez?

Un saludo y gracias.

Por defecto tomcat asigna una pequeña cantidad de memoria, ahora siendo un compartido supongo que estará mas limitada.

¿Porque no cambias a un VPS?
Con eso todos tus problemas serian "mayormente" solucionados ya que tendrás acceso total.


Edito:
Para arreglar eso, edita el archivo catalina.sh o .bat y busca la sección de memoria y ponle mayor cantidad, no se si te sea posible ya que es compartido pero así se arreglaria.

jav_000
04-sep-2011, 20:17
Por defecto tomcat asigna una pequeña cantidad de memoria, ahora siendo un compartido supongo que estará mas limitada.

¿Porque no cambias a un VPS?
Con eso todos tus problemas serian "mayormente" solucionados ya que tendrás acceso total.


Edito:
Para arreglar eso, edita el archivo catalina.sh o .bat y busca la sección de memoria y ponle mayor cantidad, no se si te sea posible ya que es compartido pero así se arreglaria.

Supongo que tendré que cambiar a un VPS cuando la aplicación deje de estar en fase de pruebas y empiece a ser utilizada por más gente.

Lo de modificar el catalina.sh lo había leído, pero creo que al ser un hosting compartido no puedo asignarlo. Tengo acceso a reiniciar tomcat y a ver el log que genera.

Lo que quería saber es si esa falta de memoria la ha provocado mi aplicación o puede haber sido la de cualquier otro usuario.

ideasmultiples
04-sep-2011, 21:20
Los recursos que requiere tomcat para funcionar de "verdad" y más en fase de desarrollo no los vas a encontrar en hosting compartido.

De entrada vas a necesitar personalizar la aplicación, la configuración, etc...

Buscate un VPS bueno y tu proyecto estará disponible mucho más rápido...

:cool:

jav_000
04-sep-2011, 21:28
Los recursos que requiere tomcat para funcionar de "verdad" y más en fase de desarrollo no los vas a encontrar en hosting compartido.

De entrada vas a necesitar personalizar la aplicación, la configuración, etc...

Buscate un VPS bueno y tu proyecto estará disponible mucho más rápido...

:cool:

Gracias por el consejo. Si conoces algún VPS donde pueda probar el servicio al menos unos días te estaría agradecido.

Y respecto a mi pregunta anterior?

globotec
04-sep-2011, 23:09
hola como estas el problema ya se que las cuentas compartida tiene por defaul 64 o 32 mb de ram asignada y tu aplicación consume mas de lo asignado
en java se se puede aumentar el tamaña de inicio y el máximo de memoria donde esto es vital para una cuenta de hosting compartida con soport java
MI recomendación que sigas con la cuenta compartida hasta que soluciones el problema que tiene con la memoria ya que es 100% error de programación y luego pasarse a un vps esto seria la forma mas facil


<!-- verbose garbage collection -->
<jvm-arg>-XX:MaxPermSize=64m</jvm-arg>

jav_000
04-sep-2011, 23:12
hola como estas el problema ya se que las cuentas compartida tiene por defaul 64 o 32 mb de ram asignada y tu aplicación consume mas de lo asignado
en java se se puede aumentar el tamaña de inicio y el máximo de memoria donde esto es vital para una cuenta de hosting compartida con soport java
MI recomendación que sigas con la cuenta compartida hasta que soluciones el problema que tiene con la memoria ya que es 100% error de programación y luego pasarse a un vps esto seria la forma mas facil


<!-- verbose garbage collection -->
<jvm-arg>-XX:MaxPermSize=64m</jvm-arg>

Estás totalmente seguro de que el error está en mi aplicación (o sea, un error de programación)? Llevo unas 3 semanas con ella, actualizándola y modificándola, y es la primera vez que obtengo un error de falta de memoria. De todas maneras revisaré los últimos cambios aplicados por si hubiera metido la pata en algo.

Gracias por la ayuda.

ideasmultiples
05-sep-2011, 00:19
Gracias por el consejo. Si conoces algún VPS donde pueda probar el servicio al menos unos días te estaría agradecido.

Y respecto a mi pregunta anterior?

Para probar puede irte bien intovps

:cool:

jav_000
05-sep-2011, 00:49
Le he echado un vistazo a una herramienta que te dice el consumo de memoria (dado por la empresa de hosting) y sin haber iniciado la aplicación (pero sí desplegada/subida) empieza en unos 15MB. La aplicación llega a un máximo de 30MB cuando se hace una consulta y tiene que devolver una cantidad alta de datos. Por lo que de 56MB que me dan tengo ocupados como máximo 30MB. El problema puede ser que al desplegar más aplicaciones aumente el consumo, aunque no se esté accediendo a ellas. En el momento en que me apareció el problema de falta de memoria tenía desplegadas 3 aplicaciones (3 versiones de la misma, pero sólo accedía a una de ellas).

He mirado el VPS que me dices, ideasmultiples, y el problema que le veo es que no es manejado. Si yo con un VPS que tuviera MySql, Tomcat y JRE suficiente. Tampoco voy a estar tocando Tomcat por lo que con uno que me viniera preconfigurado me valdría.

jav_000
05-sep-2011, 03:32
Acaba de volver a ocurrirme el error por falta de memoria. Esta vez ha sido algo distinto. Estuve mirando la herramienta que informa del consumo de memoria del usuario. Bien, con la aplicación corriendo tenía entre 20 y 30 megas. Probé a quitar la aplicación de mi cuenta, con lo que no había absolutamente nada (únicamente la aplicación que dice cuanta memoria estás consumiendo, que da el servicio de hosting por defecto) y lo extraño es que me seguía marcando 30 megas de consumo, tal como lo dejé antes. Lo extraño fue que siguió en aumento, unos kb cada vez que actualizaba la página principal. Volví a desplegar mi aplicación unas horas más tarde, y cuando lo hago otra vez el java.lang.OutOfMemoryError: PermGen space.

Lo raro es que yo mismo era testigo de cómo iba subiendo el consumo de memoria sin tener ninguna aplicación desplegada, por lo que supongo que en algún momento superó el tope de 64MB y saltó el error.

Adjunto el log del error por si alguien tiene curiosidad. Por otra parte tengo desplegada esa misma versión de la aplicación en 2 hosting compartidos más, y siguen ahí accesibles y sin problemas.

¿Alguna idea?

jav_000
05-sep-2011, 03:40
AÑADO: Reinicié Tomcat y ahora va como la seda. El consumo de memoria empezó en 5 megas (sin haber accedido a mi aplicación aún), pero cada segundo que pasa y actualizo añade algunos kb más. Ya va por 10 megas y subiendo, aunque a menor ritmo. Todo esto sin siquiera haber entrado a mi aplicación. A ver si el problema va a ser la propia aplicación que dan ellos para ver el consumo de memoria de cada usuario...

ideasmultiples
05-sep-2011, 04:56
jav_000

Si quieres trabajar correctamente en desarrollo empieza por no escatimar recursos, bastantes problemas vas a tener, como para encima tener problemas por recursos, para desarrollo no es necesario usar Softlayer, una cosa es dar servicio comercial a empresas y otra es lo que necesitas para tus pruebas en desarrollo, como te comenté antes en el foro, contrata un vps con 1 o 2GB en la firma que te indiqué y dedícate a tu producto, no pierdas el tiempo con otras cosas...

Por favor todo lo que sean preguntas relacionadas con el foro, por el foro, no por privado, las consultas privadas se hacen mediante el soporte de la empresa y tienen una tarifa establecida :-D

Independientemente, las respuestas se deben de dar en el foro para que los que siguen el hilo puedan leerlas...

:cool: