Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError

来源:互联网 发布:ubuntu 查看iptables 编辑:程序博客网 时间:2024/05/07 03:21
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError        at java.io.ObjectStreamClass.processQueue(ObjectStreamClass.java:2234)        at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:266)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106)        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)        at java.util.ArrayList.writeObject(ArrayList.java:570)        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)        at java.lang.reflect.Method.invoke(Method.java:597)        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)        at java.util.ArrayList.writeObject(ArrayList.java:570)        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)        at java.lang.reflect.Method.invoke(Method.java:597)        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)        at java.util.ArrayList.writeObject(ArrayList.java:570)        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)        at java.lang.reflect.Method.invoke(Method.java:597)        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)        at java.util.ArrayList.writeObject(ArrayList.java:570)        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)        at java.lang.reflect.Method.invoke(Method.java:597)        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)        at java.util.ArrayList.writeObject(ArrayList.java:570)        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)        at java.lang.reflect.Method.invoke(Method.java:597)        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)        at java.util.ArrayList.writeObject(ArrayList.java:570)        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)        at java.lang.reflect.Method.invoke(Method.java:597)        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)        at java.util.ArrayList.writeObject(ArrayList.java:570)        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)        at java.lang.reflect.Method.invoke(Method.java:597)        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)        at java.util.ArrayList.writeObject(ArrayList.java:570)        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)        at java.lang.reflect.Method.invoke(Method.java:597)        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)


Java serialization keeps a record of every object written to a stream. If the same object is encountered a second time, only a reference to it is written to the stream, and not a second copy of the object; so circular references aren't the problem here.


But serialization is vulnerable to stack overflow for certain kinds of structures; for example, a long linked list with no special writeObject() methods will be serialized by recursively writing each link. If you've got a 100,000 links, you're going to try to use 100,000 stack frames, and quite likely fail with a StackOverflowError.


It's possible to define a writeObject() method for such a list class that, when the first link is serialized, simply walks the list and serializes each link iteratively; this will prevent the default recursive mechanism from being used.


错误原因:被序列化的对象含有嵌套引用

0 0