From: "sam.saffron (Sam Saffron)" Date: 2013-10-09T07:04:27+09:00 Subject: [ruby-core:57746] [ruby-trunk - Bug #8984] ObjectSpace.memsize_of(obj) should return with sizeof(RVALUE) Issue #8984 has been updated by sam.saffron (Sam Saffron). Personally I have only ever seen mention of this in http://stackoverflow.com/questions/10068018/memory-size-of-a-hash-or-other-object I googled pretty hard and all I saw was wonderful pictures of tenderlove and a slightly less accurate description here: http://www.slideshare.net/tenderlove/hidden-gems-of-ruby-19 http://imgur.com/yeFYtiM I think we should break compatibility here and properly document, cause people just have no idea about this now ---------------------------------------- Bug #8984: ObjectSpace.memsize_of(obj) should return with sizeof(RVALUE) https://bugs.ruby-lang.org/issues/8984#change-42349 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/