• Post Reply Bookmark Topic Watch Topic
  • New Topic

Huge number of int arrays during deserialization.  RSS feed

Raja Reddy Karri
Posts: 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.

I fail to understand the need to track this dependency of ClassNotFoundException over a target object? Why can't the implementation throw the exception right away, if the ClassNotFoundException is found?

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.

Any insight is greatly appreciated.

  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!