gpt4 book ai didi

ruby-on-rails - 如何在内存上测量 ActiveRecord 的大小?

转载 作者:行者123 更新时间:2023-12-04 06:08:57 32 4
gpt4 key购买 nike

有些类有 size返回对象在内存上的大小的方法。例如:
1.size返回 4,这意味着需要 4 个字节来存储 Fixnum 对象( 1 的类)。 Bignum 也是如此对象:4294967296.size返回 8。
ActiveRecord::Base似乎没有等效的方法。如果想测量我的内存大小怎么办 ActiveRecord拿?

最佳答案

size方法返回数字的机器表示中的字节数。它不一定(实际上也不会)为您提供实际的内存使用情况。虽然 Fixnum 确实需要 4 字节的内存(在 MRI 中,其他 Ruby 实现有所不同),但 Bignum 需要更多内存,因为它是一个实际的 Ruby 对象。

同样,实现 size 的其他类方法如 String , Array , 或 Hash不返回内存使用情况,而是返回它们包含的元素数(分别为字符、数组元素、键)。

通常,您无法真正确定对象在内存中占用多少内存(好吧,您可以,但它不会为您提供所需的信息)。 ActiveRecord 对象引用了大量其他对象,如哈希、字符串、符号等。您可能也需要对它们进行计数,甚至可能需要递归计算。然后您需要以某种方式处理对相同对象的引用,并在某处定义对象树的边界,直到您最终重新实现大部分垃圾收集器。

所以最后,事实证明,您实际上无法确定单个 ActiveRecord 对象的内存使用情况,而且您可能不应该这样做。更多详情,请引用我在another question上的类似回答。 .

关于ruby-on-rails - 如何在内存上测量 ActiveRecord 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22385345/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com