From: ko1@... Date: 2014-12-15T08:54:26+00:00 Subject: [ruby-core:66842] [ruby-trunk - Bug #8984] [Closed] ObjectSpace.memsize_of(obj) should return with sizeof(RVALUE) Issue #8984 has been updated by Koichi Sasada. 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. ---------------------------------------- Bug #8984: ObjectSpace.memsize_of(obj) should return with sizeof(RVALUE) https://bugs.ruby-lang.org/issues/8984#change-50405 * Author: Koichi Sasada * Status: Closed * Priority: Normal * Assignee: Koichi Sasada * Category: ext * Target version: current: 2.2.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. -- https://bugs.ruby-lang.org/