首页 文章

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

提问于
浏览
2

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

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

1 回答

  • 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; ,其中包含"the size of the process image in kBytes", size_t pr_rssize; 包含"resident set size in kBytes" .

    /proc/self/map/proc/self/xmap 文件分别包含 struct prmap / prmap_t 结构和 struct prxmap / prxmap_t 结构的数组 . 两个结构都包含 size_t pr_size; 字段,定义为"size of mapping in bytes" .

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

相关问题