java.io.OptionalDataException

我在项目运行一段时间后,出现这个错误:
net.sf.ehcache.CacheException: java.io.OptionalDataException
代码定位在我像缓存里面put数据的时候

请问这是什么原因导致的啊????

以下是堆栈:
Caused by: net.sf.ehcache.CacheException: java.io.OptionalDataException
at net.sf.ehcache.store.disk.DiskStorageFactory.retrieve(DiskStorageFactory.java:938)
at net.sf.ehcache.store.disk.Segment.decode(Segment.java:167)
at net.sf.ehcache.store.disk.Segment.put(Segment.java:444)
at net.sf.ehcache.store.disk.DiskStore.put(DiskStore.java:475)
at net.sf.ehcache.store.FrontEndCacheTier.put(FrontEndCacheTier.java:221)
at net.sf.ehcache.Cache.putInternal(Cache.java:1492)
at net.sf.ehcache.Cache.put(Cache.java:1417)
at net.sf.ehcache.Cache.put(Cache.java:1382)

定位问题的办法:
修改JDK 的library里的ObjectInputStream类,当出现StreamCorruptedException时把Stream里的前4K字节写到console ouput中。可以通过这个方法找到第一次破坏协议的序列化的内容,以这个序列化的内容作为线索找出应用问题发生的地方。在出现问题的系统上加上这个补丁。这个补丁需要使用-Xbootclasspath来设置,影响JVM boot ClassLoader.

看堆栈信息,像是在和磁盘交互,但是我Eacache配置条数为1000条,远远没有达到写磁盘的条件啊。
这是我的ehcache配置:
defaultCache maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="259200"
timeToLiveSeconds="0"
overflowToDisk="true"/>