有没有办法在正在运行的进程中确定(甚至估计)Solaris上进程的内存使用情况?我需要编写一个函数来进行一些内存清理,以便在它变得太大时将我的进程保持在某个阈值以下。
似乎Solaris不支持getrusage或任何查询系统以获取当前RSS / VSZ(内存使用情况)的方法,如Linux / Windows。
答案 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位。