Bug #8984


ObjectSpace.memsize_of(obj) should return with sizeof(RVALUE)

Added by ko1 (Koichi Sasada) over 10 years ago. Updated over 9 years ago.

Target version:


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.

Updated by sam.saffron (Sam Saffron) over 10 years ago

Personally I have only ever seen mention of this in

I googled pretty hard and all I saw was wonderful pictures of tenderlove and a slightly less accurate description here:

I think we should break compatibility here and properly document, cause people just have no idea about this now

Updated by hsbt (Hiroshi SHIBATA) over 10 years ago

  • Target version changed from 2.1.0 to 2.2.0

Updated by ko1 (Koichi Sasada) over 9 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

Applied in changeset r48846.

  • ext/objspace/objspace.c: ObjectSpace.memsize_of(obj) returns
    with sizeof(RVALUE). [Bug #8984]
  • gc.c (obj_memsize_of): ditto.
  • NEWS: add a NEWS entry.
  • test/objspace/test_objspace.rb: catch up this fix.
  • test/ruby/test_file_exhaustive.rb: ditto.
Actions #4

Updated by usa (Usaku NAKAMURA) over 9 years ago

  • Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN to 2.0.0: WONTFIX, 2.1: UNKNOWN

Also available in: Atom PDF