你如何获得程序使用的内存量?

use*_*121 5 c++ memory comparison performance assembly

我有两个程序,一个是C++,另一个是汇编程序.我想比较它们分别运行时使用的内存量.我怎样才能做到这一点?

我正在Windows上进行测试,但我也想知道如何在Linux上进行测试.

Art*_*ius 6

在 Linux 上,尝试valgrind. 这是一个了不起的工具,具有太多的功能,普通人无法完全理解。看看valgrindmassif


dis*_*lad 5

在一个shell中运行该程序.打开另一个shell并运行'top'命令.它将列出正在运行的进程并将它们消耗的内存放在家中 你可以,我想,轮询/ proc/yourprocessid/stat来查看它随着时间的推移使用了多少内存.


Sat*_*bir 5

在Windows上,您可以使用性能监视器.

性能监视器用法

  • 从开始菜单/管理工具/性能启动性能监视器

  • 如果要开始记录:

  • 在浏览器左侧选择性能日志和警报>当前日志选项.

  • 选择新建日志设置.

  • 为日志指定一个适当的名称,例如performance_Server for Server

  • 它会提示你一个菜单.在"常规"选项卡中,单击"添加"按钮,然后选择要监视的进程.(更改要处理的性能对象,对于"从列表中选择计数器"选择"专用字节",对于"从列表中选择实例",选择要监视的进程.)之后单击"添加并关闭".现在根据测试用例要求更改间隔.现在转到"日志文件"选项卡将日志文件类型更改为csv或tsv格式.现在申请并按OK.

  • 如果要启动/停止日志记录:

  • 选择要启动和停止的特定日志.

  • 在上面的工具栏中,您将看到开始和停止按钮.

  • 如果要检查日志文件的内容:

  • 单击选项/数据来源...

  • 选择要查看的日志文件,单击"确定"

  • 转到图表屏幕(查看/图表)

  • 单击编辑/添加到图表

  • 将所需的项添加到图表中.(如果要检查内存泄漏,则需要查看进程的PrivateBytes和它们的_Total)

  • 从图表中读取值(最小值和最大值显示在图表的底部)

  • 如果要监控网络传输:

  • 显示图表屏幕(查看/图表)

  • 单击编辑/添加以记录日志,然后选择项目网络接口\字节已发送如果您在dl中设置它

  • 或者,如果在CRS-PC +中设置了网络Inerface\Bytes

  • 单击"完成"

  • 监控内存使用量:

  • 在菜单开始/程序/管理工具/启动程序性能监视器

  • 单击按钮以打开添加进程的窗口

  • 填写字段如下:

  • 对象:流程

  • 专柜:私人字节

  • 实例:需要显示内存占用的进程

  • 单击"添加"按钮

  • 对需要显示内存的每个进程重复最后两个步骤

  • 关闭添加进程的窗口

  • 在"性能监视器"窗口的底部,有以前选择的进程列表.

如何使用记录的数据

  1. 现在使用写字板或Excel打开文件Perfmon_.csv或Perfmon_.tsv.

如果已使用Excel打开文件,然后使用"另存为"选项,请以Microsoft Excel格式保存文件.