php - Bagaimana untuk memahami pemecahan memori yang disebutkan dalam pengaturcaraan bahasa C? Mengapa anda perlu mengelak daripada dia sebanyak mungkin?
滿天的星座
滿天的星座 2017-06-24 09:42:23
0
3
936

Bukankah memori secara rawak membaca dan menulis Ia adalah medium fizikal yang berbeza daripada cakera keras mekanikal Jadi mengapa ia menjejaskan prestasi jika terdapat serpihan memori dalam memori? Apakah sebenarnya yang dimaksudkan oleh pemecahan memori ini?

滿天的星座
滿天的星座

membalas semua(3)
女神的闺蜜爱上我

Alokasi memori biasanya digunakan pada OS untuk sebahagian besar memori terlebih dahulu, dan kemudian menandakannya sebagai tidak diperuntukkan setiap kali malloc()时标记一小段为已分配,free()bahagian kecil ini diperuntukkan.

Susunan malloc/free secara amnya adalah sewenang-wenang, jadi selepas berbilang malloc/frees, memori yang diperuntukkan dan tidak diperuntukkan akan silih berganti, seperti 分配1 -- 未分配1 -- 分配2 -- 未分配2, iaitu memori yang tidak diperuntukkan "berpecah" satu demi satu.

Kelemahan pemecahan ingatan:

  • Pendudukan memori tambahan: Walaupun jumlah keseluruhan memori yang tidak diperuntukkan mencukupi, memori berterusan mungkin masih tidak dipisahkan Dalam kes ini, anda perlu memohon lebih banyak daripada OS

  • Menjejaskan cache: Cache adalah berdasarkan halaman, dan bahagian halaman yang tidak diperuntukkan juga menduduki cache

phpcn_u1582

Cara terbaik ialah tidak menggunakan timbunan proses lalai sistem. Sebaliknya, mohon sendiri timbunan memori baharu. Data satu jenis diletakkan dalam timbunan. Ini sesuai untuk kepingan kecil data yang sering diminta dan dikeluarkan.
Anda juga boleh malloc sekeping data yang besar sendiri dahulu, dan kemudian gunakan kumpulan memori anda sendiri untuk mengurusnya.
Bagi yang pertama, pengurus fail Windows Explore berguna. Contohnya, struktur pepohon direktori yang dilalui diletakkan dalam timbunan berasingan HeapFree mengeluarkan keseluruhan timbunan pada satu masa, tanpa perlu melepaskan nod daun berulang kali.
Kedua, sebagai contoh, libjpeg sendiri mempunyai kolam memori khusus.

为情所困
  • Anda boleh belajar tentang algoritma buddy

  • Ada juga PDF ni

  • Jika anda tidak boleh membukanya, pergi ke atas dinding

  • Saya ingin tahu kod sumber malloc实现就去看看dlmalloc, ia tidak rumit

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan