This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
We see that there are huge number of int array instances during deserialization. We understand that this is due to creation of dependency tracking objects (java.io.ObjectInputStream$HandleTable$HandleList) created. As I understand, they are used to propagate ClassNotFoundException to "dependent" objects while reading an object.
Going through the code of ObjectInputStream, I think any ClassNotFoundException could be propagated immediately, rather marking the exception on every dependent object, thus avoiding HandleList and int.
I do realize that HandleTable's "entries" are absolutely required to wire any previously read objects into dependent objects read later from the stream. Just to clarify, question is about significance of java.io.ObjectInputStream$HandleTable$HandleList, which I fail to understand.