According to the map layout, it seems to be the first byte of the next field of TaggedPointer to map. Even if I look at the address of the value output by DebugPrint in heap memory, I can't confirm "16" value.
var a = {message: "hello"};
%DebugPrint(a);



Have a look at the implementation:
So the instance size is stored as a number of words, not a number of bytes, and
kInstanceSizeInWordsOffsetis4. So, in your output:That fifth byte
04is the instance size (in words; each word is 4 bytes thanks to pointer compression).Since this field in the map is only one byte large, the maximum instance size that can be stored this way is 255 words (or 1020 bytes). Larger objects need to use a different mechanism, see
SizeFromMapfor the details.