Sobes.tech
Middle+

Барои чӣ ҷудо кардани heap-и объектҳои калон (Large Object Heap) ва heap-и объектҳои хурд (Small Object Heap) дар .NET зарур аст?

sobes.tech AI

Ҷавоб аз AI

Разделение куч LOH ва SOH оптимизира идоракуи хотира барои объектҳои гуногуни андоза.

Small Object Heap (SOH)

  • Ҳамагӣ объектҳоро то 85 KB нигоҳ медорад.
  • Истифодаи ҷамъкунандаи партовҳои генерасионӣ (Generational Garbage Collection - GC).
  • Объектҳои нав эҷодшуда дар насли 0 қарор мегиранд. Объектҳои зинда ба насли 1, баъд ба насли 2 мегузаранд.
  • Ҷамъоварии партовҳо бештар ва самараноктар барои объектҳои хурд.
// Намунаи эҷоди объект дар SOH
string smallString = "Ин як сатр хурд"; // Камтар аз 85 KB
object smallObject = new object(); // Объекти хурд

Large Object Heap (LOH)

  • Ҳамагӣ объектҳоро аз 85 KB ва бештар нигоҳ медорад.
  • Нест генерасионӣ, монанди SOH. Аксар вақт танҳо дар вақти ҷамъоварии пурра (насли 2) тоза мешавад.
  • Ҳосил кардани хотира дар LOH метавонад сусттар бошад, зеро ҷустуҷӯи блоки пайвастаи хотира.
  • Фрагментацияи LOH метавонад ба мушкилоти ҳангоми ҷудо кардани объектҳои калон оварда расонад, ҳатто агар умумии хотира кофӣ бошад.
  • Объектҳо дар LOH ба таври пешфарз ҳаракат намекунанд (бо .NET Framework 4.5.1 имконият барои фишурдани LOH вуҷуд дорад, аммо он ба таври пешфарз ғайрифаъол аст ва хароҷот дорад). Ин пешгирӣ мекунад нолозимии нусхабардории объектҳои калон.
// Намунаи эҷоди объект дар LOH
byte[] largeArray = new byte[100 * 1024]; // Андоза 100 KB > 85 KB

Бартарии ҷудо кардан

  1. Оптимизатсияи ҷамъоварии партовҳо: GC-и генерасионӣ барои объектҳои кӯтоҳмуддат ва хурдтар дар SOH хеле самаранок аст. Ҳаракати объектҳо ба SOH нисбатан зуд аст.
  2. Кам кардани фрагментацияи SOH: Ҳаракати объектҳои калон хеле гарон аст ва метавонад фрагментацияи сахтро ба вуҷуд орад. Ҷудо кардани онҳо ба кучаи ҷудогонаи LOH ин мушкилотро ҳал мекунад.
  3. Минимализатсияи хароҷот: Ҳаракати объектҳои калон ба LOH хароҷоти назаррасро ба вуҷуд меорад. GC-и пешфарз онҳоро ҳаракат намекунад, ки ин хароҷотро бартараф мекунад.
  4. Беҳтар кардани суръати тақсимоти хотира: Таъинкунии дар SOH одатан хеле зуд аст (бо ёрии нишондиҳанда), дар ҳоле ки дар LOH метавонад талаб кунад, ки ҷустуҷӯи блоки озод мувофиқ.
Хусусият Small Object Heap (SOH) Large Object Heap (LOH)
Андозаи объект То 85 KB 85 KB ва бештар
Модели GC Генерасионӣ (поколения 0, 1, 2) Нест генерасионӣ (аз пешфарз)
Ҳаракати объектҳо Бале (фишурдашавӣ) Не (аз пешфарз)
Боргирии тоза Бештар Камтар (одатан бо поколение 2)
Риск фрагментация Кам (фишурдашавӣ) Баланд