java.lang.stackoverflow error
843811Aug 20 2002 — edited Aug 20 2002Hi I am getting java.lang.StackOverflow error while trying to trun this program.I have my class as serialized which is returning an object of type Graph whihc is quite big in size.I wanna wrie the object to database and then next time when I run the program i wanna retrieve it from database so that my application doesn't take a long time.
Here is my piece of code.
Can anyone help me findout how to tackle this problem.
if (g == null){
// Build a base map with all Interactions
GPBGraphBuilder gb = new GPBGraphBuilder();
if (checked.equalsIgnoreCase("yes")){
g = gb.buildBaseMap();
}
else if (checked.equalsIgnoreCase("no")){
g = gb.buildBaseMapGExp();
}
// String mapName = null;
ByteArrayOutputStream o = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(o);
ObjectOutputStream out = new ObjectOutputStream(gzip);
logger.debug("Writing the object");
try{
out.writeObject(g);
(Error comes write here)
out.flush();
o.close();
} catch(StackOverflowError stck) {
stck.printStackTrace();
out.flush();
out.close();
}
byte b[] = o.toByteArray();
error message is
java.lang.StackOverflowError
at sun.misc.SoftCache.processQueue(SoftCache.java:153)
at sun.misc.SoftCache.get(SoftCache.java:269)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:238)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1010)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1330)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1302)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1245)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1330)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1302)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1245)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1224)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1050)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1330)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1302)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1245)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1330)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1302)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1245)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1330)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1302)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1245)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1224)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1050)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1330)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1302)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1245)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1330)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1302)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1245)
.................
Thanks
Sidh