Solaris上

时间:2015-09-16 22:27:58

标签: memory solaris

有没有办法在正在运行的进程中确定(甚至估计)Solaris上进程的内存使用情况?我需要编写一个函数来进行一些内存清理,以便在它变得太大时将我的进程保持在某个阈值以下。

似乎Solaris不支持getrusage或任何查询系统以获取当前RSS / VSZ(内存使用情况)的方法,如Linux / Windows。

1 个答案:

答案 0 :(得分:3)

获取信息的一种方法是从/proc文件系统中读取数据。您可以从/proc/self/psinfo/proc/self/map/proc/self/xmap获取所需信息。请参阅man -s 4 proc

/proc/self/psinfo文件包含struct psinfo / psinfo_t,如procfs.h所述。该结构包含size_t pr_size;,其中包含"过程图像的大小(以KB为单位),而size_t pr_rssize;包含"驻留集大小(以KB为单位)"。

/proc/self/map/proc/self/xmap文件分别包含struct prmap / prmap_t结构和struct prxmap / prxmap_t结构的数组。这两个结构都包含一个size_t pr_size;字段,定义为"映射的大小,以字节为单位"。

小心阅读/proc - 确保您了解您尝试阅读的数据是否存储为32位或64位进程。另外,我认为Solaris /proc中的所有内容现在都是64位。