Solaris上运行时进程的当前内存使用情况

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

看起来Solaris不支持getrusage或以任何方式查询系统当前的RSS / VSZ(内存使用情况),如Linux / Windows。


获取信息的一种方法是从/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; 其中包含“以size_t pr_rssize;字节计的过程映像大小”,以及size_t pr_rssize; 其中包含“以kBytes为单位的驻留集大小”。

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

请仔细阅读/proc - 确保您了解您尝试读取的数据是否存储为32位或64位进程。 不速之客,我认为Solaris /proc内容现在都是64位的。

链接地址: http://www.djcxy.com/p/80169.html

上一篇: Current memory usage of process at runtime on Solaris

下一篇: How to measure the accruate memory usage for a code or process?