Метод size
возвращает количество байтов в машинном представлении числа. Это не обязательно (и не на практике) дает вам фактическое использование памяти. В то время как Fixnum действительно занимает 4 байта памяти (в MRI, другие реализации Ruby отличаются), Bignum занимает больше памяти, поскольку он является фактическим объектом Ruby.
Аналогично, другие классы, которые реализуют size
метод, как String
, Array
или Hash
не возвращает использование памяти, но количество элементов, которые они содержат (символы, элементы массива, ключи соответственно).
Как правило, вы не можете определить, сколько памяти занимает объект в памяти (ну, вы можете, но это не даст вам нужную вам информацию). Объект ActiveRecord относится к большому числу других объектов, таких как Хеши, Строки, Символы, .... Вам, вероятно, также придется считать их, возможно, даже рекурсивными. Затем вам как-то нужно иметь дело с ссылками на одни и те же объекты, а где-то определять границу вашего дерева объектов, пока вы не закончите повторное внедрение большей части сборщика мусора.
Итак, в конце концов, вы не можете практически определить использование памяти одного объекта ActiveRecord, и вам, вероятно, не стоит этого делать. Для получения дополнительной информации, пожалуйста, также см. Аналогичный ответ на мой вопрос: another question.
Возможный дубликат [Как получить размер объекта ruby в mb в Rails?] (Http://stackoverflow.com/questions/30042535/how-do-i-get-the-size-of- а-рубиновый объектно-в-MB-в-рельсы) –