Rumah > Artikel > pembangunan bahagian belakang > kegagalan baru pemprosesan golang
Kata Pengantar
Apabila membangun dengan golang, adakah anda pernah mengalami kegagalan baru? Apabila ini berlaku, bagaimana anda harus menanganinya?
Artikel ini akan memberi anda pemahaman yang mendalam tentang sebab kegagalan baru dalam golang, dan menyediakan beberapa kaedah pemprosesan untuk membantu anda menyelesaikan masalah ini.
1.
baharu ialah fungsi terbina dalam yang digunakan untuk memperuntukkan memori. Fungsinya bersamaan dengan malloc dalam bahasa C, operator baharu dalam Java, dsb.
Prototaip fungsi adalah seperti berikut:
func new(Type) *Type
Mari kita lihat contoh:
package main
import "fmt"
func main() {
var ptr *int ptr = new(int) fmt.Println("ptr 值为:", ptr) fmt.Println("*ptr 值为:", *ptr)
}
Kod di atas mentakrifkan ptr penunjuk yang menunjuk kepada jenis int dan menggunakan new(int ) untuk memperuntukkan memori ptr. Seterusnya, cetak penuding. Output konsol adalah seperti berikut:
nilai ptr ialah: 0xc0000140a0
*nilai ptr ialah: 0
Seperti yang anda lihat, ptr menunjuk ke alamat . Dan nilai *ptr ialah 0, iaitu nilai lalai pembolehubah jenis int.
2. Sebab kegagalan baru
Dalam golang, jika fungsi baru gagal memperuntukkan memori, nilai nil akan dikembalikan.
Jadi, mengapa baru gagal diperuntukkan? Sebab yang mungkin dianalisis di bawah.
Fungsi baharu memperuntukkan daripada timbunan apabila memperuntukkan ingatan Jika ingatan timbunan tidak mencukupi, peruntukan baharu mungkin gagal.
Apabila jumlah memori yang besar perlu diperuntukkan, sumber sistem pengendalian secara beransur-ansur akan habis. Sumber sistem pengendalian yang tidak mencukupi juga boleh menyebabkan peruntukan baharu gagal.
Jika terdapat kebocoran memori dalam kod, ia akan menyebabkan sejumlah besar blok memori yang tidak boleh dikeluarkan dalam sistem, akhirnya menyebabkan peruntukan baru gagal.
3. Bagaimana untuk menangani kegagalan baru?
Apakah yang perlu dilakukan apabila baru gagal memperuntukkan memori? Berikut adalah beberapa penyelesaian untuk anda.
Jika memori yang baru diperuntukkan digunakan untuk menyimpan sejumlah besar data, ia boleh dibahagikan kepada beberapa blok kecil untuk peruntukan dinamik. Ini bukan sahaja menyelesaikan masalah kegagalan peruntukan baru, tetapi juga meningkatkan kecekapan program.
Setelah sumber sistem tidak mencukupi, peruntukan baharu akan gagal. Pada masa ini, masalah boleh diselesaikan dengan meningkatkan sumber sistem. Sebagai contoh, meningkatkan memori, mengembangkan ruang cakera, dsb.
Kebocoran memori adalah salah satu punca penting memori sistem tidak mencukupi. Jika terdapat masalah kebocoran memori, ia harus diperbaiki tepat pada masanya untuk mengelakkan kegagalan peruntukan baharu.
Jika memperuntukkan memori menggunakan fungsi baharu gagal, anda boleh menggunakan fungsi make untuk memperuntukkannya. Tidak seperti fungsi baharu, fungsi buat hanya boleh digunakan untuk memperuntukkan memori jenis kepingan, peta dan saluran. Prototaip fungsinya adalah seperti berikut:
func make(Type, size IntegerType) Type
make function boleh memulakan memori yang diperuntukkan sebelum memperuntukkan memori, jadi apabila berurusan dengan beberapa jenis data yang perlu dimulakan, gunakan Fungsi make adalah lebih mudah daripada menggunakan fungsi baharu.
Berikut ialah contoh menggunakan fungsi make untuk memperuntukkan memori hirisan:
utama pakej
import "fmt"
func main() {
var s []int s = make([]int, 10) fmt.Println("s 容量为:", cap(s))
}
Dalam kod di atas, kami memperuntukkan 10 blok memori jenis int untuk kepingan s melalui fungsi make. Hasil output adalah seperti berikut:
Kapasiti ialah: 10
Ringkasan
Artikel ini menerangkan sebab kegagalan baru dalam golang dan cara menanganinya. Apabila fungsi baharu gagal memperuntukkan memori, anda boleh menyelesaikan masalah dengan menukar struktur program, meningkatkan sumber sistem, membetulkan kebocoran memori dan menggunakan fungsi make.
Dalam kerja harian, kita perlu sentiasa memberi perhatian kepada penggunaan memori untuk mengelakkan penggunaan memori yang berlebihan dan kegagalan orang baru untuk memperuntukkan ingatan. Hanya melalui penggunaan memori yang cekap prestasi dan kecekapan program boleh dipertingkatkan.
Atas ialah kandungan terperinci kegagalan baru pemprosesan golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!