为啥 sys.getsizeof() 返回的值比实际大小大 33 个字节?

Posted

技术标签:

【中文标题】为啥 sys.getsizeof() 返回的值比实际大小大 33 个字节?【英文标题】:Why does sys.getsizeof() return a value that is 33 bytes more than the actual size?为什么 sys.getsizeof() 返回的值比实际大小大 33 个字节? 【发布时间】:2020-09-21 11:53:25 【问题描述】:

以下代码返回 35 作为答案:

print(sys.getsizeof((1024).to_bytes(2, byteorder='big')))

不应该 int.to_bytes() 返回 1024 的字节表示,它是 2 个字节长,因为文档提到:

The integer is represented using length bytes. An OverflowError is raised if the integer is not representable with the given number of bytes.

我理解错了什么?

【问题讨论】:

【参考方案1】:

我相信您忽略了在创建每个 python 对象时所带来的垃圾收集器开销。另外请注意,sys.getsizeof() 不计算对象引用的对象的大小。

【讨论】:

有没有什么方法可以只获取对象大小而没有任何开销? 没有简单的方法。请参阅***.com/questions/33978/… 了解更多信息

以上是关于为啥 sys.getsizeof() 返回的值比实际大小大 33 个字节?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 查询调优 - 为啥使用变量中的值比使用文字慢得多?

python 类型大小

Python 获得对象内存占用内存大小 sys.getsizeof

在 Python 中准确测量对象大小 - Sys.GetSizeOf 不起作用

C# Parallel.ForEach 和 Task.WhenAll 有时返回的值比预期的少

带有内容的Python深度getsizeof列表?