packagemainimport("fmt""syscall")funcf(iint)int{ifi<10000{i++fmt.Println(i)a:=make([]byte,100)a=append(a,byte(1))b:=f(i)returnb}else{returni}}funcmain(){varrlimitsyscall.Rlimitrlimit.Cur=1rlimit.Max=2//syscall.Setrlimit(syscall.RLIMIT_CPU,&rlimit)rlimit.Cur=100//以字节为单位rlimit.Max=rlimit.Cur+1024err:=syscall.Setrlimit(syscall.RLIMIT_STACK,&rlimit)iferr!=nil{panic(err)}f(0)/*fori:=0;i<1000000;i++{forj:=0;j<100000;j++{forq:=0;q<1000;q++{a=append(a,[]byte{1,2,3}...)}}}*/}我想要用rlimit系统调用限制进程的资源.如果去掉注释,可以限制时间,但是不知道为什么限制不了内存.go的内存似乎是在堆上分配的,怎样统计比较合适呢?另外:golang下面没有ptrlimit调用,如果要限制子进程的资源的话应该怎么办?
达令说
相关分类