繁体   English   中英

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

[英]How do you get how much memory a program uses?

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

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

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

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

性能监视器用法

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

  • 如果要开始记录:

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

  • 选择新建日志设置。

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

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

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

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

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

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

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

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

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

  • 单击编辑/添加到图表

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

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

  • 如果要监控网络传输:

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

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

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

  • 单击“完成”

  • 监控内存使用量:

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

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

  • 填写字段如下:

  • 对象:流程

  • 专柜:私人字节

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

  • 单击“添加”按钮

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

  • 关闭添加进程的窗口

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

如何使用记录的数据

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

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

在Linux上,尝试valgrind 这是一个神奇的工具,有太多的功能让凡人完全理解。 看看valgrindmassif

Windows任务管理器可以显示每个进程的内存使用情况。 我想你可以使用Valgrind,但我没有看到这一点。 在Linux上,使用Valgrind或ps。

在Windows上,您可以使用GetProcessMemoryInfo函数

以下是如何使用它的示例:
收集进程的内存使用信息

取决于您的操作系统 - 您可能希望有工具告诉您应用程序运行时消耗的内存。

尝试通过检查代码来推断答案将是非常困难的,运行应用程序,使用您的平台的诊断。

根据程序的大小,这几乎是不可行的。

如果它们不是很大,那么你可以看到它们分配了多少内存; 例如,一个int占用4个字节,一个char占用1个字节,等等。即使在x86机器上,程序集的内存使用量也非常透明。 只要您忠实地跟踪对象创建和内存破坏/分配,Cpp几乎是透明的。

如果程序很大,您将需要使用特定工具来跟踪/分析内存使用情况,例如GlowCode( http://www.glowcode.com/summary.htm )。

在Windows上,您可以使用Microsoft的性能监视器来执行此操作。 开始,运行,“perfmon”。 此工具将报告有关流程的各种统计信息,并为您提供图表。 一般来说,你会对报道“私人工作集”感兴趣。 这将告诉您进程为自己使用保留了多少内存。

如果你想获得你的堆使用,并且你想以编程方式进行,你应该查看CRT Debug Heap

我不确定Linux,对不起。

在Windows上,我发现地址空间监视器非常有用,特别是对于查看内存碎片的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM