当前位置: 首页 > 面试题库 >

找出Python中某个对象正在使用多少内存[重复]

柳玄裳
2023-03-14
问题内容

这个问题已经在这里有了答案

如何确定Python中对象的大小? (13个回答)

4年前关闭。

您将如何查找对象正在使用多少内存?我知道有可能找出一个代码块,而不是实例化对象(在其生命中的任何时候)要使用多少,这就是我想要的。


问题答案:

没有简单的方法来找出python对象的内存大小
。您可能会发现的问题之一是Python对象(如列表和字典)可能引用了其他python对象(在这种情况下,您的大小是多少?包含每个对象的大小的大小?)。存在一些与对象类型和垃圾回收相关的指针开销和内部结构。最后,某些python对象具有非显而易见的行为。例如,大多数情况下,列表为更多的对象保留了空间。dict甚至更加复杂,因为它们可以以不同的方式进行操作(对于少量的键,它们具有不同的实现方式,有时它们会过度分配条目)。

那里有一大段代码(和更新的一大段代码),以尝试最好地估计内存中python对象的大小。

您可能还需要检查一些有关PyObject的旧描述(内部C结构实际上代表了所有python对象)。



 类似资料:
  • 问题内容: 您将如何查找对象正在使用多少内存?我知道有可能找出一个代码块,而不是实例化对象(在其生命中的任何时候)要使用多少,这就是我想要的。 问题答案: 尝试这个: 如果对象是由垃圾收集器管理的,则getsizeof()调用该对象的__sizeof__方法并增加额外的垃圾收集器开销。

  • 问题内容: 我需要存储大量的日期(可能足够大,以至于需要考虑使用的堆空间量,因此请不要讲授过早的优化),我想知道使用某种原始表示是否有意义java.util.Date(或其他一些现有的Date类)的形式。我知道我可以进行一些性能分析来尝试一下,但是有人知道一个Date对象使用多少字节的内存吗? 问题答案: 我的直觉反应是Date的内存开销非常小。检查源代码,似乎该类仅包含一个实例字段(长为毫秒)。

  • 我最近读了很多关于字符串内存分配的文章,但找不到任何细节,如果在Java8中情况相同的话。 在Java8中,像这样的字符串会使用多少内存空间?我使用64位版本。

  • 问题内容: 具有100个属性的一个对象所消耗的存储空间是否与每个具有一个属性的100个对象所消耗的存储空间相同? 为一个对象分配多少内存? 添加属性时会使用多少额外空间? 问题答案: 指出,这不是一个容易回答的简单问题: JVM可以自由地以内部或大端或小端的任何方式存储数据,并具有一定的填充或开销,尽管基元必须表现得好像它们具有官方大小一样。 例如,JVM或本机编译器可能会决定将64位长块(如)存

  • 问题内容: 我认为我的LAMP应用程序中可能发生内存泄漏(内存用完,交换开始使用,等等)。如果我可以看到各个进程使用了​​多少内存,则可以帮助我解决问题。有没有办法让我在* nix中查看此信息? 问题答案: 获得正确的内存使用情况比人们想象的要棘手。我能找到的最好方法是: 其中“ PROCESS”是要检查的过程的名称,而“ TYPE”是以下之一: :常驻内存使用情况,该进程使用的所有内存,包括该进

  • 问题内容: 我和我的朋友正在讨论Strings,而我们坚持了这一点: 他说总共将创建三个对象,而我说将创建一个对象。 他在3个对象之后的逻辑是:一个用于“ ObjectOne”,一个用于“ ObjectTwo”,第三个是两个String对象的串联版本。 我在一个对象后面的逻辑是在编译时,两个字符串对象都将在字节码中串联为: 并且在运行时,将仅以这种方式创建一个对象。这背后的真相是什么? 问题答案:

  • 问题内容: 我必须String对象: 我需要做的是找出第二个对象在第一个对象中重复多少次,您能告诉我该怎么做吗? 问题答案: 最简单的方法是在循环中使用,每次找到该单词时都会提高起始索引: 如果一个单词包含自我重复,它将多次找到该单词。请参阅上面的注释,以避免这种“重复”的发现。 ideone演示。

  • 我们目前正在为我们的一个产品添加服务器端脚本功能。作为其中的一部分,我正在评估JSR 223脚本引擎。因为我们可能会在服务器上运行大量的脚本,所以我特别担心这些脚本引擎的内存使用情况。将Rhino(苹果JDK 1.6.0_65-b14-462-11M4609,苹果OS X 10.9.2)与Nashorn(甲骨文JDK 1.8.0-b132)进行比较,每个ScriptEngine实例的内存使用量似乎