Penghadan Saiz Memori Tindanan: Pertimbangan Teknikal
Timbunan, struktur data asas dalam pengkomputeran, biasanya dicirikan oleh saiz terhadnya berbanding dengan timbunan itu. Walaupun timbunan menawarkan peruntukan memori yang kelihatan tidak terhad, saiz tindanan biasanya terhad kepada sekitar 1 MB. Ini menimbulkan persoalan: apakah faktor teknikal yang menyumbang kepada perbezaan ini?
Menurut satu hipotesis, saiz terhad timbunan berpunca daripada kerumitan pengurusan yang wujud berbanding timbunan. Tindanan memerlukan lokasi memori berterusan untuk operasinya. Tidak seperti timbunan, ia tidak boleh memperuntukkan memori secara rawak seperti yang diperlukan, sebaliknya mesti menempah alamat maya untuk tujuan ini. Lebih besar ruang alamat maya yang dikhaskan, lebih sedikit benang boleh dibuat.
Sebagai contoh, dalam aplikasi 32-bit dengan ruang alamat maya 2GB, saiz tindanan 2MB (seperti dalam pthread) mengehadkan bilangan maksimum daripada urutan hingga 1024. Had ini boleh menjadi masalah untuk aplikasi seperti pelayan web yang memerlukan sejumlah besar utas. Meningkatkan saiz tindanan kepada 100MB, sementara tidak memperuntukkan jumlah penuh serta-merta, akan mengurangkan lagi had benang kepada sekitar 20. Kekangan sedemikian boleh menghalang walaupun aplikasi GUI yang mudah.
Anehnya, had yang sama berterusan pada 64-bit platform, di mana terdapat ruang alamat maya yang mencukupi. Untuk menjelaskan perkara ini, sesetengah membuat spekulasi bahawa "amalan terbaik timbunan" yang ditubuhkan telah mempengaruhi kekurangan sokongan untuk timbunan besar pada sistem 64-bit. Pembangun terbiasa memperuntukkan objek besar pada timbunan dan secara manual meningkatkan saiz tindanan apabila perlu. Akibatnya, keperluan yang dirasakan untuk sokongan tindanan "besar" tidak muncul pada seni bina 64-bit.
Atas ialah kandungan terperinci Mengapa Timbunan Saiz Terhad Sementara Timbunan Nampak Tidak Terhad?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!