I do have a Java web app(strust2) and it does use the struts2-json
plugin, for handling json
requests. Recently, I came down to an error Java Heap Space
which is very strange.
This is in my struts.xml
<action name="saveSigned"
class="org.xxx.xxx.xxx.action.marriage.SaveSigned">
<interceptor-ref name="json">
<param name="enableSMD">true</param>
</interceptor-ref>
<result type="json">
<param name="contentType">application/json</param>
</result>
<param name="requiredAuthorities">F_ADD_MARRIAGE</param>
</action>
The JSON data is generated and sent to this action saveSigned
. This is the JSON data which is being sent:
encodedBase64:"somebase64encodeddata", uuId:"someUUID"
So I send only these 2 variables to be automatically handled by struts2-json
plugin. Based on uuId
I get some data from the database
.. and this is where I get the error. I dont understand why it give me jave heap error
bacause of struts2-json
, when in the code I dont use it.
This is the pieace of code which throws this error:
marriage = xxxRegisterService.getMarriageUuId(getUuId());
The error itself
java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3332) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:137) at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:121) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:421) at java.lang.StringBuilder.append(StringBuilder.java:136) at java.lang.StringBuilder.append(StringBuilder.java:131) at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:578) at org.apache.struts2.json.JSONWriter.array(JSONWriter.java:498) at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:158) at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:401) at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:231) at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178) at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168) at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) at org.apache.struts2.json.JSONWriter.array(JSONWriter.java:492) at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:158) at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:401) at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:231) at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178) at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168) at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) at org.apache.struts2.json.JSONWriter.array(JSONWriter.java:492) at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:158) at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:401) at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:231) at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178) at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168) at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) at org.apache.struts2.json.JSONWriter.array(JSONWriter.java:492)
So, the struts2-json
assigns only 1 simple text uuId
.. and based on that uuId
im getting some data from database and then assign it to the variable.
The strange part is that, everything works fine.. I can see all changes in the database, the application returns success
but only after a minute it throws this error..