I have an ArrayList of custom, simple Serializable objects I would like to cache to disk and read on re-launch. My data is very small, about 25 object
It's hard to know without profiling but my guess is your poor performance is down to using ObjectOutputStream. Have you tried writing your own writeObject(ObjectOutputStream) and readObject(ObjectOutputStream) methods as this may help performance.
You could use the traceview tool to see exactly where the application is running slow. Have a look at this question for instructions on how to use traceview.