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.


On 17/09/16 01:08, Matt Ryan wrote:

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.


Reply via email to