python - Python 应用程序内存分析不准确
问题描述
我正在分析 Python 3 应用程序并试图了解内存的分配位置。
我尝试了多个库:
pympler
tracemalloc
皮勒代码:
all_objects = muppy.get_objects()
summary.summarize(all_objects)
Tracemalloc 代码:
current_snapshot = tracemalloc.take_snapshot()
total_size = 0
for stat in current_snapshot.statistics("filename"):
total_size += stat.size
print(total_size)
这两个工具报告的内存比 Python 应用程序实际消耗的内存少 10 倍以上。该应用程序可以消耗超过 500 MB,而我在报告中得到了 50 MB 以下。
我正在手动检查内存使用情况并使用以下功能:
mem_usage = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
# resource.getrusage provides memory usage in bytes on OSX but in kilobytes for other platforms
if sys.platform != constants.PLATFORM_MAC:
mem_usage *= 1024
return mem_usage
我在代码中调用gc.collect()
之前的生成报告。
我使用gc
库来查看应用程序是否泄漏了任何内存,但没有看到任何重要的东西。
有人可以解释为什么我能看到如此巨大的差异吗?
解决方案
推荐阅读
- javascript - js文件中的导入导出方法不起作用
- java - 将数组列表转换为字符串数组
- linux - 在 CentOS 上意外取消 oracle 19c 安装怎么办
- jboss - 注入导致 WELD-001408:不满足的依赖关系
- python - 从 ipyton Notebook 下载 SQL 数据库
- c# - C# 中的人脸识别(使用 EigenFaceRecognizer)将未知人脸识别为经过训练的人脸
- javascript - 如何以更方便的方式在 iframe 容器中包含 javascript 变量
- node.js - 如何在 nodejs 中的 sqlite3 上加载扩展?
- outlook - Microsoft.Office.Interop.Outlook 不能在 Web 服务器上运行,但可以在本地计算机上运行
- python - cx_Oracle.DatabaseError ORA-01722: 无效数字 python