Also remember that when you serialize an Object (if I am not mistaken), all the Objects referred to by that Object get serialized too (unless the references are transient). In addition, there is serialization overhead (protocol info that is not actually part of your Object but that is required to deserialize). Your returned size could be misleading if you have references to, say, some "parent" Object(s) in LDIFData, or a ton of serialization overhead (unlikely).

Erik



Erik Weber wrote:

public static long getSize(LDIFData data) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(baos);
out.writeObject(data);
out.close();
return baos.toByteArray().length;
}
catch (Exception e) {
e.printStackTrace();
return -1;
}
}

John Moore wrote:

Navjot Singh wrote:


I use SAX parser to load an LDIF file into memory. Whatsoever data i read, i fill into an object.


I need to know *the size of LDIFData object* at runtime. How to do that?

Well the class structure is something like this

public class LDIFData{
ArrayList cards; // collection of Card
String filename;
long lastLoadedTime;
}

public class Card{
String name;
String email
String mobile;
}

Off the top of my head...

Serialize it to a byte array output stream, see how many bytes you have

John


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to