cancel
Showing results for 
Search instead for 
Did you mean: 

WS y Java Heap Space al subir ficheros

tremalnaik
Champ in-the-making
Champ in-the-making
Hola a todos,

Estoy aquí partiéndome los cuernos con un WS que crea una sentencia CMLWrite para mandar un contenido de 14MB.

El error procede de AXIS, que es la versión 1.4:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
   at java.lang.String.<init>(Unknown Source)
   at org.apache.axis.encoding.Base64.encode(Base64.java:207)
   at org.apache.axis.encoding.ser.Base64Serializer.getValueAsString(Base64Serializer.java:71)
   at org.apache.axis.encoding.ser.Base64Serializer.serialize(Base64Serializer.java:54)
   at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1504)
   at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
   at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:734)
   at org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:230)
   at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1504)
   at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
   at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:734)
   at org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:247)
   at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1504)
   at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
   at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:801)
   at org.apache.axis.message.RPCParam.serialize(RPCParam.java:208)
   at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
   at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
   at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
   at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
   at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
   at org.apache.axis.message.MessageElement.getAsString(MessageElement.java:1111)
   at org.apache.axis.message.MessageElement.getAsDocument(MessageElement.java:1079)
   at org.apache.ws.axis.security.WSDoAllSender.invoke(WSDoAllSender.java:158)
   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.client.AxisClient.invoke(AxisClient.java:127)
   at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
   at org.apache.axis.client.Call.invoke(Call.java:2767)
   at org.apache.axis.client.Call.invoke(Call.java:2443)
   at org.apache.axis.client.Call.invoke(Call.java:2366)

El fichero de 14MB se transforma en un array de bytes y se inserta en:


CMLWriteContent writeContent = new CMLWriteContent();

writeContent.setContent(content.getContenido());

Donde getContenido() devuelve el citado array de bytes.

Estoy con la versión 3.4.d, y esta ejecución me falla tanto lanzándola desde un main de java como de una aplicación JSP.

Gracias!!
2 REPLIES 2

rmacian
Champ in-the-making
Champ in-the-making
Alfresco no guarda los datos que llegan del stream a disco directamente si no que los guarda a memoria y una vez tiene el documento completo en memoria es cuando hace el volcado al dispositivo de almacenamiento.

Si estas arrancando Alfresco con los valores por defecto de 512mb esto hará que la memoria ya ande justa en el arranque. En cuanto intentas cargar al documento como el que comentas esa memoria se consume y tienes el heap como consecuencia.

debes modificar el parámetro -Xmx  de la variable JAVA_OPTS  del script de arranque y subirla un poco dependiendo de la memoria que tengas disponible. Es probable que para desarrollo con 640m tengas de sobras

tremalnaik
Champ in-the-making
Champ in-the-making
Ok, así sí que ha marchado. Muchas gracias Smiley Happy