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

C中当前进程的内存使用情况

穆季萌
2023-03-14
问题内容

我需要在C中获取当前进程的内存使用情况。有人可以提供在Linux平台上执行此操作的代码示例吗?

我知道cat /proc/<your pid>/status获取内存使用情况的方法,但是我不知道如何在C中捕获它。

顺便说一句,它是针对我正在修改的PHP扩展(当然,我是C新手)。如果PHP扩展API中有可用的快捷方式,那将更加有用。


问题答案:

您始终可以/proc像常规文件一样在系统中打开“文件” (使用“自我”符号链接,因此您不必查找自己的pid):

FILE* status = fopen( "/proc/self/status", "r" );

当然,您现在必须解析文件以挑选所需的信息。



 类似资料:
  • 问题内容: jvm进程的内存使用量一直在增加,并且从未减少。我通过在linux服务器上执行top进行检查。该应用程序正在将作业调度到群集(使用Quartz + SunJava DRMAA API) Java堆空间在应用程序生命周期内保持在限制之内,但是jvm进程显示内存使用率稳定增长且从未下降。 这是内存泄漏吗?如果是这样,为什么堆空间在限制之内。有人可以解释一下。 更新: 当我通过jconsol

  • 问题内容: 我正在运行一个wordpress网站,每个PHP进程的使用空间约为200mb至250mb。使用16GB的ram,服务器只能处理大约70个进程。通过将虚拟内存增加到16GB,它可以处理140个。之后,负载不断增加。如果10分钟内有200个连接,则在3Ghz四核xeon处理器上服务器负载将达到20个! 我曾尝试停用所有插件,但这只会使每个进程的PHP内存使用量减少不到10%。suPHP告诉

  • 我想了解为什么多次动态分配调用的数据比直接在代码中指定的或通过的单个调用分配的数据使用如此多的内存。 例如,我用C编写了以下两个代码: 测试1.c:int x用malloc分配 我在这里没有使用free来保持简单。当程序等待交互时,我查看另一个终端中的顶级功能,它向我显示了以下内容: test2. c: int x不是动态分配的 顶部显示: 我还编写了第三个代码,其结果与test2相同,我在tes

  • 问题内容: 您如何衡量Linux中应用程序或进程的内存使用情况? 从了解Linux上的内存使用的博客文章中可以看出,这不是用于此目的的准确工具。 为什么是“错” 根据您的看法,它不会报告进程的实际内存使用情况。它的真正作用是显示 如果 每个进程 是唯一运行的进程 , 则 每个进程将占用多少实际内存。当然,一台典型的Linux机器在任何给定时间都运行着几十个进程,这意味着报告的VSZ和RSS编号几乎

  • 问题内容: Python程序是否有办法确定当前正在使用多少内存?我已经看到了有关单个对象的内存使用情况的讨论,但是我需要的是该过程的总内存使用情况,以便可以确定何时需要开始丢弃缓存的数据。 问题答案: 这是适用于各种操作系统(包括Linux,Windows 7等)的有用解决方案: 在我当前使用psutil 5.6.3安装的python 2.7中,最后一行应为 相反(API发生了变化)。 注意:如果

  • 问题内容: 我正在尝试跟踪处理URL的脚本的内存使用情况。基本思想是在将另一个URL添加到cURL多处理程序之前,检查是否存在合理的缓冲区。我正在使用“滚动cURL”概念,该概念在多处理程序运行时处理URL数据。这意味着我可以在每次处理和删除现有URL时通过从池中添加新URL来保持N个连接处于活动状态。 我已经使用了一些积极的结果。添加该标志很有帮助(虽然并不清楚“系统”内存和“ emalloc”