This is a great summary of how to do this with the new Instrument package in Java 5+.
The article boils it down very well, but the ultra nutshell version is that you define a class that gets loaded as a "pre-main" agent. First, create a simple implementation of
java.lang.instrument.Instrument, creating a manifest file, putting the class file into a jar (with the manifest). Then, start your java application (like tomcat or whatever) with -javaagent:jarfile. Finally, in your code, call your SizeAgent class like this:
try {
int size = SizeAgent.sizeOf("some java object, like maybe this string");
} catch (IllegalStateException e) {
// size agent is not loaded by -javaagent switch
}