>  기사  >  백엔드 개발  >  golang 코루틴은 얼마나 많은 메모리를 차지합니까?

golang 코루틴은 얼마나 많은 메모리를 차지합니까?

(*-*)浩
(*-*)浩원래의
2019-12-31 11:09:325074검색

golang 코루틴은 얼마나 많은 메모리를 차지합니까?

기본적으로 고루틴은 코루틴입니다.

차이점은 Golang이 런타임, 시스템 호출 등 여러 측면에서 고루틴 스케줄링을 캡슐화하고 처리한다는 것입니다. 장기 실행이나 시스템 호출이 발생하면 고루틴의 CPU(P)를 적극적으로 사용합니다. )는 다른 고루틴을 예약하고 실행할 수 있도록 전송됩니다. 즉, Golang은 언어 수준에서 코루틴을 지원합니다.

Golang의 주요 기능 중 하나는 기본적으로 언어 수준에서 코루틴을 지원한다는 것입니다. 함수나 메서드 앞에 go 키워드를 추가하면 코루틴을 만들 수 있습니다. (권장 학습: go)

Coroutine은 Go 언어의 경량 스레드 구현이며 Go 런타임에 의해 관리됩니다.

GO 버전: go 버전 go1.4.2 linux/amd64

테스트 환경:

[root@localhost mpro]# more /proc/cpuinfo | grep "model name"
model name      : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
model name      : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
model name      : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
model name      : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
[root@localhost mpro]# 
[root@localhost mpro]# grep MemTotal /proc/meminfo
MemTotal:        3868776 kB
[root@localhost mpro]# getconf LONG_BIT
64
[root@localhost mpro]# more /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

테스트 사례:

package main
 
import (
    "time"
)
 
func main() {
    for i := 0; i < 200000; i++ {
        go func() {
            time.Sleep(5 * time.Second)
        }()
    }
 
    time.Sleep(10 * time.Second)
}

프로그램 실행 전:

top - 18:53:19 up 19 min,  3 users,  load average: 0.00, 0.04, 0.11
Tasks: 522 total,   1 running, 521 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.2 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  3868776 total,  3327732 free,   235764 used,   305280 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  3397344 avail Mem
#🎜🎜 #

프로그램 실행 후:

top - 18:53:37 up 19 min,  3 users,  load average: 0.00, 0.04, 0.11
Tasks: 524 total,   1 running, 523 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.2 us, 10.6 sy,  0.0 ni, 88.2 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  3868776 total,  2793732 free,   752512 used,   322532 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  2880016 avail Mem

요약: 200,000개의 코루틴이 500M 메모리와 500,000KB를 차지합니다.#🎜🎜 # # 🎜🎜#코루틴은 평균 2.5KB를 차지합니다

위 내용은 golang 코루틴은 얼마나 많은 메모리를 차지합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.