错误代码:
Exception in thread "http-bio-8080-exec-7"
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
at java.lang.StringBuilder.append(StringBuilder.java:203)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:518)
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
at java.lang.StringBuilder.append(StringBuilder.java:203)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:518)
错误原因:根据错误代码的提示是内存溢出
解决过程:最开始我是去修改myeclipse和tomcat的内存大小,但是数据并不多却造成了内存溢出,经过jdk内存监控,发现会使用接近2G的内存,浏览器获取的数据也到了100多M
根本原因:原因是
hibernate抽象的数据库的对象问题,其中的Set问题,Set表示
hibernate中多对多或者多对一的关系,如果你在查询一个对象中的数据的时候,例如:“from User”。它会根据对象中的Set查询一个又一个相连的表,其实就是外键。
解决办法:在对象中Set的get方法前面加上@JSON(serialize = false)。@JSON(serialize = false)是为了过滤不需要的变量。