Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
macOS和Linux上get rusage.maxrss的奇怪值_Linux_Macos_Go_Rusage - Fatal编程技术网

macOS和Linux上get rusage.maxrss的奇怪值

macOS和Linux上get rusage.maxrss的奇怪值,linux,macos,go,rusage,Linux,Macos,Go,Rusage,目前,我正在写关于golang的在线判断系统。 为了检测用户程序内存使用情况,我决定分析cmd.ProcessState.SysUsage并检查Rusage.Maxrss。 现在我很困惑,因为当我尝试在我的mac上运行Rusage.Maxrss调用的结果时很奇怪 这是我在macOS和Linux上运行的代码,经过简化,这段代码称为当前进程的Getrusage 我得到的结果是: 包干管 进口 fmt 系统调用 func main{ rusage:=syscall.rusage{} pageSize:

目前,我正在写关于golang的在线判断系统。 为了检测用户程序内存使用情况,我决定分析cmd.ProcessState.SysUsage并检查Rusage.Maxrss。 现在我很困惑,因为当我尝试在我的mac上运行Rusage.Maxrss调用的结果时很奇怪

这是我在macOS和Linux上运行的代码,经过简化,这段代码称为当前进程的Getrusage 我得到的结果是:

包干管 进口 fmt 系统调用 func main{ rusage:=syscall.rusage{} pageSize:=syscall.Getpagesize 如果错误:=syscall.Getrusagesyscall.RUSAGE\u SELF,&RUSAGE;错误!=nil{ 打印错误 圆锥花序 } fmt.Printfpage大小:%d\n用法.Maxrss:%d\n,页面大小,rusage.Maxrss } 下面是我得到的结果

马科斯: Linux/Ubuntu-18.04:
go run test.go                     
page size: 4096
rusage.Maxrss: 17580
你能解释一下为什么它返回这么大的值吗?正如我所看到的macOS手册和linux手册页:rusage.Maxrss 或者C语言的rusage.ru_maxrss以千字节为单位,所以在macOS上我的代码使用了大约2GB的内存 在Linux上,它只使用~20MB

使用rusage.Maxrss测量用户程序使用的内存是一个好的决定吗 或者有更好的方法?

在我的Mac电脑上,getrusage手册页上说:ru_maxrs字节中使用的最大驻留集大小。这似乎对你的结果有意义


您所指的是以千字节为单位的。目前还不清楚这是由于iOS和macOS之间的行为不同,还是由于手册页中的错误而导致的,该错误已被纠正。遗憾的是,苹果没有在线维护手册页。

在我的Mac电脑上,getrusage手册页上写着:ru_maxrs最大驻留集大小,以字节为单位。非常感谢@ken thomases,我见过也没见过本地人。这是我的错,不客气。我不知道这是macOS和iOS之间的区别,还是随着时间的推移发生了变化,未维护文档归档中的链接显示了早期的手册页。而且,如果它确实随着时间的推移而改变,可能只是手册页不正确,已经被更正;或者,可能是操作系统的行为发生了变化,手册页准确地反映了该行为。
go run test.go                     
page size: 4096
rusage.Maxrss: 17580