T
timjowers
Someone else asked this in April but groups.google.com does not allow
me to reply to it: "JDK 1.4 to 1.5 StackOverFlowError".
Running under 1.5 I receive a StackOverFlowException when serializing
to disk ~10-100k of objects in a hierarchy with the nodes saved in
ArrayLists. I can try -Xss but has anyone else seen and fixed this
problem? Is all Java serialization stack-size inhibited or does
ArrayList specially impose this restriction in its implementation of
writeObject?
Thanks!
TimJowers
Exception in thread "main" java.lang.StackOverflowError
at sun.misc.SoftCache.processQueue(SoftCache.java:153)
at sun.misc.SoftCache.get(SoftCache.java:269)
at java.i
bjectStreamClass.lookup(ObjectStreamClass.java:244)
at
java.i
bjectOutputStream.writeObject0(ObjectOutputStream.java:1029)
at
java.i
bjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
at
java.i
bjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
at
java.i
bjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
at
java.i
bjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
at java.i
bjectOutputStream.writeObject(ObjectOutputStream.java:291)
at java.util.ArrayList.writeObject(ArrayList.java:570)
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
java.i
bjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
at
java.i
bjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
at
java.i
bjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
at
java.i
bjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
at
java.i
bjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
at
java.i
bjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
at
java.i
bjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
at
java.i
bjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
at java.i
bjectOutputStream.writeObject(ObjectOutputStream.java:291)
at java.util.ArrayList.writeObject(ArrayList.java:570)
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
java.i
bjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
at
java.i
bjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
at
java.i
bjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
at
java.i
bjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
at
java.i
bjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
at
java.i
bjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
at
java.i
bjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
at
java.i
bjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
at java.i
bjectOutputStream.writeObject(ObjectOutputStream.java:291)
at java.util.ArrayList.writeObject(ArrayList.java:570)
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
java.i
bjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
at
java.i
bjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
... hundreds of lines duplicating those above ....
at java.lang.reflect.Method.invoke(Method.java:585)
at
java.i
bjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
at
java.i
bjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
at
java.i
bjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
at
java.i
bjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
at
java.i
bjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
at
java.i
bjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
at
java.i
bjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
at
java.i
bjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
at java.i
bjectOutputStream.writeObject(ObjectOutputStream.java:291)
at java.util.ArrayList.writeObject(ArrayList.java:570)
me to reply to it: "JDK 1.4 to 1.5 StackOverFlowError".
Running under 1.5 I receive a StackOverFlowException when serializing
to disk ~10-100k of objects in a hierarchy with the nodes saved in
ArrayLists. I can try -Xss but has anyone else seen and fixed this
problem? Is all Java serialization stack-size inhibited or does
ArrayList specially impose this restriction in its implementation of
writeObject?
Thanks!
TimJowers
Exception in thread "main" java.lang.StackOverflowError
at sun.misc.SoftCache.processQueue(SoftCache.java:153)
at sun.misc.SoftCache.get(SoftCache.java:269)
at java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at java.i
at java.util.ArrayList.writeObject(ArrayList.java:570)
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at java.i
at java.util.ArrayList.writeObject(ArrayList.java:570)
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at java.i
at java.util.ArrayList.writeObject(ArrayList.java:570)
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
java.i
at
java.i
... hundreds of lines duplicating those above ....
at java.lang.reflect.Method.invoke(Method.java:585)
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at java.i
at java.util.ArrayList.writeObject(ArrayList.java:570)