Hi Matt, 48 bytes is the shallow size of String object with a 64 Bit Oracle 7 JVM. In this version the String class also keeps offset and length fields, which means the estimate is rather conservative and slightly higher than what is e.g. needed for Oracle's Java 8. The latter only keeps a char[] and an int for the computed hash.
As for the estimated value of an empty string. Even in this case the String will have the char[] and int for the hash. That is, the method will never return 0. Regards Marcel On 17/09/16 01:08, Matt Ryan wrote:
Hi, I'm creating some unit tests for StringUtils.estimateMemoryUsage() in oak-commons, and in doing so I noticed that it returns a value of 48 for an empty string. Is this expected? From a naive point of view it would seem to me that a null string should return 0, and likewise an empty string, but then again I don't know the history behind the function as it is currently written. -MR
