Issue #8984 has been reported by ko1 (Koichi Sasada).

----------------------------------------
Bug #8984: ObjectSpace.memsize_of(obj) should return with sizeof(RVALUE)
https://bugs.ruby-lang.org/issues/8984

Author: ko1 (Koichi Sasada)
Status: Assigned
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: ext
Target version: current: 2.1.0
ruby -v: -
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


Now, ObjectSpace.memsize_of(obj) return without sizeof(RVALUE).
For example, ObjectSpace.memsize_of('foo') returns 0 because shorter string are embedded in RVALUE.

Proposal is returning the size including sizeof(RVALUE).
If we introduce variable RVALUE size (*1), then it will help.

*1: for example, T_FLOAT only use sizeof(double).
    Only 2 words (or 1 word on 64bit enviornment) are needed.


Question is: it breaks compatibility, but anyone care about it?

Another option is to add optional parameter. memsize_of(obj, include_rvalue: true), etc.




-- 
http://bugs.ruby-lang.org/