Pregunta 12. PermGen no existe en Java 8

Temas relacionados con el examen de test
Responder
fagarcia
Usuario registrado
Mensajes: 12
Registrado: 29 Feb 2016, 17:39
Agradecido: 0
Agradecimiento recibido: 0

Pregunta 12. PermGen no existe en Java 8

Mensaje por fagarcia »

Buenas a todos. La pregunta 12 fue la siguiente:

12. Nada más arrancar el servidor de aplicaciones, usted intenta acceder a su aplicación y se produce un error de memoria. En ese momento, sospecha que el error se produce porque está utilizando unas librerías de terceros de gran tamaño. ¿Qué tipo de error debería estar dándose para corroborar su hipótesis?
a) java.lang.OutOfMemoryError: Java heap space
b) java.lang.OutOfMemoryError: PermGen space
c) java.lang.OutOfMemoryError: Requested array size exceeds VM limit
d) java.lang.OutOfMemoryError: request <size> bytes for <reason>. Out of swap space

Sin embargo desde Java 8 ya no existe PermGen, ya que se ha remodelado la asignación de memoria de la JVM. En resumidas cuentas, se ha sustituido por MetaSpace, y si no me equivoco, el error que eleva desde Java 8 es "java.lang.OutOfMemoryError: Metaspace". Por tanto la pregunta debe ser incorrecta ya que ninguna respuesta es correcta, o debería haberse cambiado la pregunta a "qué tipo de error podría estar dándose".
Tal como la veo, es impugnable. ¿Qué opináis?

Avatar de Usuario
gayopedro
PreparaTIC 24
Mensajes: 75
Registrado: 09 Nov 2011, 10:39
Agradecido: 0
Agradecimiento recibido: 0

Re: Pregunta 12. PermGen no existe en Java 8

Mensaje por gayopedro »

La verdad es que la pregunta deja que desear, porque el enunciado ni siquiera hace referencia a que el servidor tenga que ser Java (usando otra tecnología daría otro tipo de error) y el contexto te lo dan las opciones de respuesta. Por otro lado se podría decir que si los mensajes de error de las 4 opciones te hacen pensar en el contexto de un servidor Java y no en el de un servidor .Net (por poner un ejemplo), también te podrían haber hecho pensar en un servidor Java versión 7.0 y no en un servidor Java 8.0.

fagarcia
Usuario registrado
Mensajes: 12
Registrado: 29 Feb 2016, 17:39
Agradecido: 0
Agradecimiento recibido: 0

Re: Pregunta 12. PermGen no existe en Java 8

Mensaje por fagarcia »

Claro, por eso mismo, para ser consecuente en vez de "¿Qué tipo de error debería estar dándose para corroborar su hipótesis?" tendría que haber sido " ¿Qué tipo de error podría estar dándose para corroborar su hipótesis?". Con eso también cubriría el caso de otros servidores. En todo caso, tal como está, o no es adecuada la pregunta o ninguna de las respuestas puede ser correcta.

rovema
PreparaTIC26
Mensajes: 62
Registrado: 26 Abr 2014, 20:47
Agradecido: 0
Agradecimiento recibido: 0

Re: Pregunta 12. PermGen no existe en Java 8

Mensaje por rovema »

La verdad es que esta pregunta está mal planteada, ya que como bien decís no tiene porque darse obligatoriamente ese mensaje, ya que si no habláramos de Java, no habría opción correcta de entre las dadas. Tendría que haber especificado que es Java o en todo caso, plantear la pregunta con un podría.

Avatar de Usuario
anarosa
PreparaTIC 24
Mensajes: 32
Registrado: 29 May 2009, 12:41
Agradecido: 0
Agradecimiento recibido: 0

Re: Pregunta 12. PermGen no existe en Java 8

Mensaje por anarosa »

Sí. Yo también estuve dando vueltas a esta impugnación porque no especifica qué tipo de servidor de aplicaciones "debería" dar ese error. No me había decidido porque no sé cómo va esto de los criterios de impugnación. ¿Es válido que el contexto de la pregunta se defina mediante las opciones de respuesta? Si esto es así, ¿estaremos circunscribiéndonos a Java anterior a 8 y no sería impugnable?

Por otra parte, PermGem es la memoria donde se cargan los metadatos de las clases cargadas por los classloader. Claro que si los metadatos cargados superan el tamaño de esa memoria dará ese error, sin embargo también puede ser que una librería sea muy grande también y tengamos un PermGem bien dimensionado para albergar sus metadatos y, en este caso, podría ser que dado el número y tamaño de los objetos que instancia esa librería al arrancar el servidor nos de el error java.lang.OutOfMemoryError: Java heap space si el heap está infradimensionado. Un error PermGem podría estar generado simplemente porque tenemos más librerías de las que nos caben en esa zona de memoria, no sólo porque una librería sea muy grande.

Yo no veo una relación directa del tipo "si hipótesis Y es correcta, entonces [b]debería[/b] darse el error X", porque si mi hipótesis es correcta (la librería es muy grande) y tengo bien dimensionada la memoria PermGem pero mal dimensionado el Heap dado el número y tamaño de los objetos que se instancian de esa librería al arrancar el servidor, entonces debería darse el error del heap, no el del PermGem. Y por supuesto, si mi hipótesis es correcta y no estoy en un servidor Java inferior a Java 8 tampoco debería darse ese error del PermGem porque simplemente no existe.

¿Cómo veis mi razonamiento?

Avatar de Usuario
oposicjj
PreparaTIC25
Mensajes: 136
Registrado: 28 Ene 2010, 14:03
Agradecido: 0
Agradecimiento recibido: 0

Re: Pregunta 12. PermGen no existe en Java 8

Mensaje por oposicjj »

Me parece que es una pregunta con un enunciado ambiguo y que con ese razonamiento da lugar a solicitar la anulación y que decida el Tribunal.

Avatar de Usuario
anarosa
PreparaTIC 24
Mensajes: 32
Registrado: 29 May 2009, 12:41
Agradecido: 0
Agradecimiento recibido: 0

Re: Pregunta 12. PermGen no existe en Java 8

Mensaje por anarosa »

He encontrado este artículo https://blogs.oracle.com/poonam/entry/a ... _permanent

Aquí no sólo dice que en Java 8 no existe el PermGen, sino que en Java 7 ya movieron cosas de la memoria permanente a la heap, con concreto los símbolos, las cadenas internas y los elementos estáticos de las clases, por lo que si una librería es muy grande PUEDE que sus metadatos me desborden la memoria permanente o PUEDE que sus elementos estáticos, símbolos o cadenas internas me desborden la heap.

Por lo tanto, la respuesta b) dada por válida sólo lo sería en la JDK 6 e inferiores, porque evidentemente si el servidor de aplicaciones no es java tampoco sería una respuesta válida

Yo veo claramente la impugnación y la voy a enviar :mrgreen:
Espero que alguien se apunte

Responder

Volver a “PRIMER EXAMEN 2015”