Artikel hari ini akan berkongsi dengan anda 27 punca gopark. Untuk kemudahan membaca, kami akan menerangkan mengikut kategori. .
waitReasonGCAssistMarking
GC assist markingwaitReasonIOWait
IO tunggu
- waitReasonZero: Tiada penjelasan rasmi, berdasarkan penggunaan. Terutamanya digunakan dalam dua senario: tidur dan kunci.
- waitReasonGCAssistMarking: Fasa penandaan tambahan GC akan menyebabkan menunggu terhalang.
-
waitReasonIOTunggu: Apabila IO disekat dan menunggu, contohnya: permintaan rangkaian, dsb. . nil chan)
waitReasonChanSendNilChanchan hantar (nil chan)
- waitReasonChanReceiveNilChan: Baca operasi pada saluran yang tidak dimulakan.
- waitReasonChanSendNilChan: Tulis operasi ke saluran yang tidak dimulakan. . imbasan kutipan sampah
- waitReasonDumpingHeap: Apabila membuang timbunan Go Heap, senario penggunaan ini hanya disekat semasa runtime.debug, iaitu jenis koleksi pprof biasa.
- waitReasonGarbageCollection: Dicetuskan semasa kutipan sampah, senario utama ialah fasa Penamatan GC Mark.
- waitReasonGarbageCollectionScan: Semasa pengimbasan kutipan sampah, senario utama dicetuskan apabila tanda GC (GC Mark) mengimbas peringkat Root. .
waitReasonSelectselect
waitReasonSelectNoCasesselect (tiada kes )
|
- waitReasonPanicTunggu: Dicetuskan apabila panik berlaku dalam goroutine utama.
- waitReasonSelect: Dicetuskan apabila memanggil kata kunci pilih.
- waitReasonSelectNoCases: Apabila memanggil kata kunci pilih, jika tiada kes, ia akan dicetuskan secara langsung. .
tungguReasonGCScavengeWaitGC sapu tunggu
tungguReasonGCScavengeWait GC mengais tunggu
|
- waitReasonGCAssistWait: Gelagat tamat dalam fasa tanda tambahan GC akan dicetuskan.
- waitReasonGCSweepWait: Gelagat tamat dalam fasa sapuan GC akan dicetuskan.
- waitReasonGCScavengeWait: Gelagat akhir fasa GC scavenge akan dicetuskan. GC Scavenge terutamanya pengumpulan sampah ruang baharu Ia adalah GC yang kerap berjalan dan pantas yang bertanggungjawab untuk membersihkan objek yang lebih kecil dari ruang baharu. .
tungguReasonChanSend
chan hantar
tungguReasonFinalizerTunggufinalizer tunggu
|
- waitReasonChanReceive: Operasi baca pada saluran akan dicetuskan.
- waitReasonChanSend: Dicetuskan apabila menulis dalam saluran.
-
waitReasonFinalizerWait: akan dicetuskan apabila finalizer tamat. Dalam program Go, anda boleh menetapkan fungsi finalizer untuk objek dengan memanggil fungsi
runtime.SetFinalizer . Tingkah laku ini sepadan dengan kitar semula yang disebabkan oleh fasa akhir. .
waitReasonSemacquiresemacquire
waitReasonSleep tidur
|
- waitReasonForceGCIdle: Dicetuskan apabila GC paksa (masa melahu) tamat.
- waitReasonSemacquire: Dicetuskan apabila pemprosesan semaphore tamat.
- waitReasonSleep: tingkah laku tidur klasik, akan dicetuskan. . ia
waitReasonTimerGoroutineIdle goroutine pemasa (terbiar)
waitReasonTraceReaderDisekatpembaca jejak (disekat)
|
- waitReasonSyncCondWait: Dicetuskan apabila digabungkan dengan kaedah
sync.Cond 用法能知道,是在调用 sync.Wait .
- waitReasonTimerGoroutineIdle: berkaitan dengan Pemasa, ia akan dicetuskan apabila tiada pemasa untuk melaksanakan tugas.
-
waitReasonTraceReaderBlocked: Berkaitan dengan Trace, ReadTrace akan mengembalikan data surih binari dan akan menyekat sehingga data tersedia. . kitaran
tungguReasonGCWorkerIdlePekerja GC (terbiar)
tungguReasonPreempted
dipreempted
|
waitReasonDebugCall |
debug call
- waitReasonWaitForGCCycle: Menunggu kitaran GC, ia akan tidur dan menyebabkan tersumbat.
- waitReasonGCWorkerIdle: Apabila Pekerja GC melahu, ia akan tidur dan menyebabkan terhalang.
- waitReasonPreempted: Apabila preemption panggilan kitaran berlaku, ia akan tidur dan menunggu penjadualan.
- waitReasonDebugCall: Dicetuskan apabila GODEBUG dipanggil.
Ringkasan
Artikel hari ini adalah tambahan kepada penjelasan terperinci tentang fungsi runtime.gopark pada mulanya.
Adegan utama ialah:
- Lain-lain, seperti: panik, pemuktamad, pilih, dsb.
Kita boleh menggunakan ciri-ciri ini untuk membongkar sebab-sebab yang boleh menyebabkan penyumbatan. Malah, tidak perlu diingati mereka akan menyebabkan sekatan kerana ada faktor yang mempengaruhi aliran kawalan, yang akan membawa kepada panggilan gopark.
|
|
|
|
|
|
Atas ialah kandungan terperinci 27 sebab mengapa Goroutine hang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!